网络编程获取本机IP地址和指定域名IP地址

网络编程获取本机IP地址和指定域名IP地址
网络编程获取本机IP地址和指定域名IP地址

网络编程技术实验报告

实验名称实验一网络编程基础训练

实验报告要求: 1.实验目的 2.实验要求 3.实验环境 4.实验作业 5.问题及解决

6.思考问题

7.实验体会

【实验目的】

掌握Wireshark的基本用法,掌握netstat的基本用法,能够使用这些工具对网络应用程序的传输过程进行捕获、观察和状态分析;了解Windows Sockets API的基本函数功能,掌握Windows Sockets的编程环境配置,掌握网络程序设计的基本过程。

【实验要求】

1、下载安装Wireshark,熟悉捕获、查看、过滤、查找等基本方法,对用户飞秋文件

传输、文字聊天等行为进行网络通信过程分析。

2、熟悉netstat命令,查看用户使用网络应用程序过程中对系统网络状态的改变。

3、使用Windows Sockets的API函数获得本机的IP地址。

4、使用Windows Sockets的API函数获得给定域名的IP地址。

【实验环境】

1.飞秋数据包的捕获用Wireshark;

2.Windows8自带命令提示符;

3.VS 2012编写程序。

【实验作业】

NO.1:飞秋文件传输、文字聊天等行为分析

1.数据包捕获:

2.飞秋文件传输、文字聊天的网络通信过程分析:

1)通过广播方式,查询局域网内所有主机的MAC地址,采用ARP协议,解析目标IP地址

为10.104.113.130的主机:

2) IP地址为10.104.113.130的主机回应请求,告知本机的MAC地址

从而无连接的通信建立了。传输层协议为UDP。

3)IP地址为10.104.113.130的主机给请求端发送数据(首部为8字节;数据部分72字节):

以太网层使用的是MAC地址

网络层传输用的鉴别机制为IP地址。

NO.2:netstat命令测试系统网络状态的改变

netstat命令:

a)显示所有连接和侦听的端口:

b)应用程序对系统网络状态的改变:

NO.3:利用Windows Socket的API函数获取本机IP和指定域名的IP地址:

利用C#网络编程提供的API,完成获取本机IP地址和指定域名IP地址的任务。代码及执行情况,见Src文件和exe文件。

using System;

using System.Collections.Generic;

using System.Text;

using https://www.360docs.net/doc/387878041.html,;

using https://www.360docs.net/doc/387878041.html,.Sockets;

using System.Runtime.InteropServices;

namespace WindowsSocket_1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("请输入要查询域名");

string dnsName=Console .ReadLine();

IsNetConnecting netconnect = new IsNetConnecting();

bool NetConnect = netconnect.IsConnected();

Program winsocket=new Program();

if (NetConnect == true)

{

string localIP = winsocket.GetHostIP();

Console.WriteLine("本机IP地址:" + localIP);

winsocket.Resolve(dnsName);

for (int i = 0; i < winsocket.IPLength; i++)

Console.WriteLine("对应域名的IP地址[" + (i + 1) + "]为:" + winsocket.m_arrayIPs[i]);

}

else {

Console.WriteLine("当前网络连接不可用。无法获取本机IP地址和指定域名的IP地址");

}

Console.Read();

}

#region 获取主机IP地址

public string GetHostIP(){

string strHostName = Dns.GetHostName(); //获取本地计算机名称

Console.WriteLine("本地计算机名:" + strHostName); //由本地计算机名称获取本机IP地址

IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);

return ipEntry.AddressList[2].ToString(); //返回本机IP地址Console.ReadKey();

}

#endregion

#region 获取已知域名的IP地址

IPAddress[] m_arrayIPs;

public void Resolve(string s_host)

{

IPHostEntry ip = Dns.GetHostByName(s_host);

m_arrayIPs = ip.AddressList;

}

public IPAddress this[int nIndex] {

get {

return m_arrayIPs[nIndex];

}

}

相关主题
相关文档
最新文档