C#.NET网络程序开发的基本类(一)(C#---网络编程)

C#.NET网络程序开发的基本类

C#.NET的System.NET命名空间为Internet网络上使用的多种协议提供了便利的编程接口。

1、IPAddress类

IPAddress类提供的是主机的IP地址及相关信息,包括IP回环地址Loopback、IP广播地址Broadcase以及对IPv6协议的支持。

IPAddress的构造函数是publicIPAddress(longaddress)

IPAddress类的常用公共方法

Equals(Object)

比较两个 IP 地址。

GetAddressBytes(?)

以字节数组形式提供IPAddress的副本。

HostToNetworkOrder(?)

将值由主机字节顺序转换为网络字节顺序

IsLoopback(IPAddress)

指示指定的 IP 地址是否为返回地址。

NetworkToHostOrder(?)

将数字由网络字节顺序转换为主机字节顺序。

Parse(String)

IP 地址将字符串转换为IPAddress实例。

ToString()

将 Internet 地址转换为其标准表示法。

TryParse(String,?IPAddress)

确定字符串是否为有效 IP 地址。

常用Parse()方法创建IPAddress实例,其语法如下:

public static IPAddress Parse(string ipString)

将IP地址转换成标准表示法的ToString()方法的语法如下:

public override string ToString()

2、IPHostEntry类

IPHostEntry类将域名系统(DNS)主机名与别名和匹配的IP地址相关联,它提供主机的IP地址(借助IPAdress类)、主机名及别名。

IPHostEntry类的属性:

属性名称

类型

说明

AddressList

IPAddress[]

获取或设置与主机关联的 IP 地址列表。

Aliases

string[]

获取或设置与主机关联的别名列表,通常为一组字符串。

HostName

string[]

获取或设置主机的 DNS 名称。

3、IPEndPoint类

将网络端点表示为 IP 地址和端口号。其对象表示指定IP地址和端口号的组合,从而形成到主机的连接点。

命名空间:System.Net**程序集:**System(在 System.dll 中)

语法

C#

[SerializableAttribute]
public class IPEndPoint : EndPoint

构造函数

名称

说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3HDIyXTv-1648692312470)(https://i-msdn.sec.s-msft.com/areas/global/content/clear.gif)]

IPEndPoint(Int64, Int32)

用指定的地址和端口号初始化IPEndPoint类的新实例。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wyGPwTWn-1648692312471)(https://i-msdn.sec.s-msft.com/areas/global/content/clear.gif)]

IPEndPoint(IPAddress, Int32)

用指定的地址和端口号初始化IPEndPoint类的新实例。

IPEndPoint类属性

属性名称

类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SQBJxyQo-1648692312472)(https://i-msdn.sec.s-msft.com/areas/global/content/clear.gif)]Address

IPAddress

获取或设置终结点的 IP 地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTZCiouy-1648692312473)(https://i-msdn.sec.s-msft.com/areas/global/content/clear.gif)]AddressFamily

AddressFamily

获取网际协议 (IP) 地址族。(重写EndPoint.AddressFamily。)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQbd15B8-1648692312474)(https://i-msdn.sec.s-msft.com/areas/global/content/clear.gif)]Port

int

获取或设置终结点的端口号。

4、Dns 类

Dns类是一个静态类,提供简单的域名解析功能。

Dns类的静态方法:

GetHostName:获取本地计算机的主机名。

GetHostAddresses:返回指定主机的 Internet 协议 (IP) 地址。

示例1、

下面的示例在 DNS 数据库中查询关于主机 www.contoso.com 的信息。

IPHostEntry hostInfo = Dns.GetHostByName(“www.contoso.com”);

示例2、编程实现获取并显示本机的IP地址、主机名信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net; ? //网络

namespace showIP
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? //获得本机局域网所有IP地址
? ? ? ? ? ? IPAddress[] addr = Dns.GetHostByName(Dns.GetHostName()).AddressList;
? ? ? ? ? ? foreach (IPAddress ip in addr)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine("本机IP地址为:" +ip.ToString());
? ? ? ? ? ? }
? ? ? ? ? ? //获取本机主机名
? ? ? ? ? ? Console.WriteLine("本机主机名为:"+Dns.GetHostEntry(addr[0]).HostName);
? ? ? ? ? ? //创建本机端口
? ? ? ? ? ? IPAddress localIp = IPAddress.Parse("127.0.0.1");
? ? ? ? ? ? IPEndPoint iep = new IPEndPoint(localIp, 80);
? ? ? ? ? ? Console.WriteLine("IP端点:" + iep.ToString());
? ? ? ? ? ? Console.WriteLine("IP端口:" + iep.Port);
? ? ? ? ? ? Console.WriteLine("IP地址族:" + iep.AddressFamily);
? ? ? ? ? ? Console.WriteLine("可分配端口最大值:" + IPEndPoint.MaxPort);
? ? ? ? ? ? Console.WriteLine("可分配端口最小值:" + IPEndPoint.MinPort);
? ? ? ? }
? ? }
}

5、C#的命名空间System.Net.NetworkInformation提供了与Ping有关的Ping、PingOptions和PingReply类

(1)Ping类

利用Ping类检测本地主机与远程主机之间的通信是否正常。

(2)

PingOptions 类

用于控制如何Ping传输数据包。

命名空间:???System.Net.NetworkInformation

程序集:??System(位于 System.dll)

继承层次结构

System.Object

??System.Net.NetworkInformation.PingOptions

(3)PingReply 类

提供有关的状态和生成的数据的信息?SendSendAsync操作

命名空间:???System.Net.NetworkInformation

程序集:??System(位于 System.dll)

继承层次结构

System.Object

??System.Net.NetworkInformation.PingReply

示例3、编程实现用Ping、PingOptions和PingReply类测试目标主机是否可以到达的信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net; ? //网络
using System.Net.NetworkInformation; ?//网络

namespace PingHost
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? Ping pingSender = new Ping();
? ? ? ? ? ? PingOptions options = new PingOptions();
? ? ? ? ? ? options.DontFragment = true;

? ? ? ? ? ? //data为要发送的数据
? ? ? ? ? ? string data = “aaaaaaa”;
? ? ? ? ? ? byte[] buffer = Encoding.ASCII.GetBytes(data);
? ? ? ? ? ? int timeout = 120;
? ? ? ? ? ? //Ping网络IP地址为:192.168.0.103的主机
? ? ? ? ? ? PingReply reply = pingSender.Send(“192.168.0.103”, timeout, buffer, options);
? ? ? ? ? ? if (reply.Status==IPStatus.Success)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(“Address:{0}”, reply.Address.ToString());
? ? ? ? ? ? ? ? Console.WriteLine(“RoundTrip time:{0}”, reply.RoundtripTime);
? ? ? ? ? ? ? ? Console.WriteLine(“Time to live:{0}”, reply.Options.Ttl);
? ? ? ? ? ? ? ? Console.WriteLine(“Don’t fragment:{0}”, reply.Options.DontFragment);
? ? ? ? ? ? ? ? Console.WriteLine(“Buffer size:{0}”, reply.Buffer.Length);
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(“目标主机Ping失败”);
? ? ? ? ? ? }
? ? ? ? ? ? Console.ReadLine();
? ? ? ? }
? ? }
}

)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值