C#网编基础类与API(一)
2021-03-27 17:24
标签:logs interface ica ssi 设备 网络访问 bin 计算机 ora IPAddress类提供了对IP地址的转换、处理等功能。其Parse方法可将IP地址字符串转换为IPAddress实例。 IPEndPoint类包含应用程序连接到主机上的服务所需的主机和端口信息,通过组合服务的主机IP地址和端口号,IPEndPoint类形成到服务的连接点。 IPAddress是ip,如“127.0.0.1” 提供了一系列静态的方法,用于获取提供本地或远程域名对象的相关信息,常用方法有: 获取网络适配器的配置和统计信息,MAC地址等信息。 1、可以通过它检测本机配置了多少网卡,哪些网络连接可用,获得网卡的 2、此类封装本地计算机上的网络接口(也称作适配器)的数据。不需创建此类的实例;GetAllNetworkInterfaces 方法返回一个数组,对于本地计算机上的每个网络接口,该数组中都包含一个此类的实例。 1、此类可用于访问支持 IPv4 或 IPv6 的网络接口的配置和地址信息。不要创建此类的实例,这些实例将由 GetIPProperties 方法返回。 2、若要访问 IPv4 特定属性,请使用 GetIPv4Properties 方法返回的对象。若要访问 IPv6 特定属性,请使用 GetIPv6Properties 方法返回的对象 此类提供有关本地计算机的网络接口和网络连接的配置和统计信息 可以获取本机TCP UDP 丢包 发包等数据。 1、IPHostEntry类的实例对象中包含了Internet主机的相关信息。 在app中,我们经常需要确定网络是否畅通,windows下自带ping.exe 那么我们C#中如何实现ping操作呢。 Ping可确定 是否可成功联系远程主机。如果存在或配置了代理服务器、网络地址转换 (NAT) 设备或防火墙,可能会妨碍 Ping 成功。 Ping 成功只是表示可以通过网络访问远程主机;但并不保证远程主机上存在更高级别的服务(例如 Web 服务器)。 PingOptions 类提供 Ttl 和 DontFragment 属性以控制如何传输 Internet 控制消息协议 (ICMP) 回送请求数据包。 Ping 类尝试将 Internet 控制消息协议 (ICMP) 回送请求发送到远程计算机并接收该计算机通过 ICMP 回送答复消息返回的信息。 Ping 类使用 PingReply 类的实例返回有关操作的信息,如操作状态以及发送请求和接收答复所用的时间。 https://blog.csdn.net/liyuqian199695/article/details/53643865 C#网编基础类与API(一) 标签:logs interface ica ssi 设备 网络访问 bin 计算机 ora 原文地址:https://www.cnblogs.com/retry/p/9353648.htmlC#网编基础类与API(一)
一、IPadress类
如:IPAddress ip = IPAddress.Parse(“192.168.1.1”);IPAddress 类提供了7个只读字段:
Any 表示本地系统可用的任何IP地址 (0.0.0.0)
Broadcast 表示本地网络的IP广播地址 (255.255.255.255)
IPv6Any Socket.Bind方法用此字段指出本地系统可用的IP地址
IPv6Loopback 表示系统的回送地址
IPv6None 表示系统上没有可用的网络接口
Loopback 表示系统的回送地址 (127.0.0.1)
None 表示系统上没有可用的网络接口 (255.255.255.255)
// 构造一个IP地址对象IPAddress的构造函数是
public IPAddress(long address) //通常情况下用不到它,因为有简单的方法可以使用
方法1:
IPAddress.Any //分配你机器上一个任何可用ip来初始化这个IP地址对象。
方法2:
IPAddress.Parse("192.168.1.1");
void Start ()
{
//IPAddress(Byte[]) 新实例初始化 IPAddress 类地址指定为 Byte 数组。;
IPAddress ipAddress1 = new IPAddress(new byte[] { 151, 33, 86, 50 });
//IPAddress(Int64) 新实例初始化 IPAddress 类地址指定为 Int64。
IPAddress ipAddress2 = new IPAddress(0x2414188f);
//Parse(String) IP 地址将字符串转换为 IPAddress 实例
IPAddress ipAddress3 = IPAddress.Parse("192.168.100.9");
Debug.Log("ip1="+ipAddress1+"/ip2="+ipAddress2+"/ip3="+ipAddress3);
//IPEndPoint 表示主机地址和端口信息。
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress1,8899);
Debug.Log("IP="+ipEndPoint.Address+"/Port="+ipEndPoint.Port);
IPAddress[] ips = Dns.GetHostEntry("www.baidu.com").AddressList;
foreach (IPAddress ip in ips)
{
Debug.Log("baidu ip="+ip);
}
ips = Dns.GetHostAddresses("www.cctv.com");
foreach (IPAddress ip in ips)
{
Debug.Log("cctv ip=" + ip);
}
}
二、IPEndPoint
在IPEndPoint类中有两个很有用的构造函数:
public IPEndPoint(long, int);
public IPEndPoint(IPAddress, int);
它们的作用就是用指定的地址和端口号初始化IPEndPoint类的新实例。
IPEndPoint是ip和端口对的组合,如“127.0.0.1:80”三、Dns类
//GetHostAddresses方法
//获取指定主机的IP地址,返回一个IPAddress类型的数组,函数原形为:
public static IPAddress[] GetHostAddresses(string hostNameOrAddress);
//示例:
IPAddress[] ip=Dns.GetHostAddresses("www.cctv.com");
listBox1.Items.AddRange(ip);
//GetHostName方法
获取本机主机名。例如:string hostname = Dns.GetHostName();
四、NetworkInterface类
MAC地址和速度
等。
void Start ()
{
//网卡信息类
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adap in adapters)
{
Debug.Log("CardName::" + adap.Name + " /Speed::" + adap.Speed + " /MAC::" + BitConverter.ToString(adap.GetPhysicalAddress().GetAddressBytes()));
IPInterfaceProperties ipProperties = adap.GetIPProperties();
GatewayIPAddressInformationCollection gateways = ipProperties.GatewayAddresses;
foreach (var tmp in gateways)
{
Debug.Log("Gateway>>>"+tmp.Address);
}
IPAddressCollection dnsAddress = ipProperties.DnsAddresses;
foreach (IPAddress tmp in dnsAddress)
{
Debug.Log("DNS>>>" + BitConverter.ToString(tmp.GetAddressBytes()));
}
}
}
五、IPGlobalPropertie类
//得到本机Internet协议IPV4的统计数据;
IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
IPGlobalStatistics ipstat = properties.GetIPv4GlobalStatistics();
Console.WriteLine(" Inbound Packet Data:");
Console.WriteLine(" Received ............................ : {0}",ipstat.ReceivedPackets);
Console.WriteLine(" Forwarded ........................... : {0}",ipstat.ReceivedPacketsForwarded);
Console.WriteLine(" Delivered ........................... : {0}",ipstat.ReceivedPacketsDelivered);
Console.WriteLine(" Discarded ........................... : {0}",ipstat.ReceivedPacketsDiscarded);
六、IPHostEntry类
2、常用属性有:AddressList属性和HostName属性。
3、AddressList属性作用:获取或设置与主机关联的IP地址列表,是一个IPAddress类型的数组,包含了指定主机的所有IP地址;HostName属性则包含了服务器的主机名。//在Dns类中,有一个专门获取IPHostEntry对象的方法,通过IPHostEntry对象,可以获取本地或远程主机的相关IP地址。
listBox1.Items.Add("网易所用的服务器IP地址有:");
IPAddress[] ip = Dns.GetHostEntry("www.163.com").AddressList;
listBox1.Items.AddRange(ip);
listBox1.Items.Add("本机IP地址为:");
ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
listBox1.Items.AddRange(ip);
七、Ping实现
Ping类位于System.Net.NetworkInformation下。通过它应用程序确定是否可通过网络访问远程计算机。
此类提供的功能类似于 Ping.exe 命令行工具。 Send 和 SendAsync 方法将 Internet 控制消息协议 (ICMP) 回送请求消息发送到远程计算机并等待来自该计算机的 ICMP 回送答复消息。有关 ICMP 消息的详细说明,请参见 RFC 792,这可以在 http://www.ietf.org 上找到。
Ttl 属性为 Ping 类发送的数据包指定生存时间。此值指示在丢弃 Ping 数据包之前可以转发此数据包的路由节点数。如果要测试将数据包从源计算机发送到目标计算机所需的转发数(也称为跃点),设置此选项很有用。
DontFragment 属性控制是否可将发送到远程主机的数据分成多个数据包。如果要测试用于传输数据包的路由器和网关的最大传输单元 (MTU),此选项很有用。
PingOptions 类的实例被传递给 Send 和 SendAsync 方法,PingReply 类通过 Options 属性返回 PingOptions 的实例
Send 方法直接返回 PingReply 类的实例。 SendAsync 方法在 PingCompletedEventHandler 方法的 PingCompletedEventArgs 参数中返回 PingReply。通过 Reply 属性访问 PingReply。
如果 Status 的值不是 Success,则不应该使用由 RoundtripTime、Options 或 Buffer 属性返回的值。 RoundtripTime 属性将返回零,Buffer 属性将返回空数组,而 Options 属性将返回 null。//Ping 实例对象;
Ping pingSender = new Ping();
//ping选项;
PingOptions options = new PingOptions();
options.DontFragment = true;
string data = "ping test data";
byte[] buf = Encoding.ASCII.GetBytes(data);
//调用同步send方法发送数据,结果存入reply对象;
PingReply reply = pingSender.Send("www.baidu.com", 120, buf, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("主机地址::"+reply.Address);
Console.WriteLine("往返时间::"+reply.RoundtripTime);
Console.WriteLine("生存时间TTL::"+reply.Options.Ttl);
Console.WriteLine("缓冲区大小::"+reply.Buffer.Length);
Console.WriteLine("数据包是否分段::"+reply.Options.DontFragment);
}
八、参考文献
http://www.cnblogs.com/2Yous/p/5801067.html
下一篇:C#时间方法