C# socket学习--IPAddress、IPEndPoint、DNS

来源:互联网 发布:nginx docker 负载均衡 编辑:程序博客网 时间:2024/05/18 08:45

 

一、IP地址操作类
1、IPAddress类
  在该类中有一个Parse()方法,可以把点分的十进制IP表示转化成IPAddress类,方法如下:
 IPAddress address = IPAddress.Parse(“192.168.0.1”);
 IPAddress提供4个只读字段
  Any   用于代表本地系统可用的任何IP地址
  Broadcase 用于代表本地网络的IP广播地址 (广播地址(BroadcastAddress)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机) 
  Loopback 用于代表系统的回送地址    (回送地址(127.x.x.x)(通常为127.0.0.1)即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。)
  None用于代表系统上没有网络接口
 其中IPAddress.Any常用来表示本机上所有的IP地址,这对于socket服务进行侦听时,方便使用,不用对每个IP进行侦听了。而IPAddress.Broadcase可用来UDP的IP广播。
2、IPEndPoint类 
 我们可以通过2种构造方法来创建IPEndPoint类:
 a、IPEndPoint(long address, int port)(ipv6)
 b、IPEndPoint(IPAddress address, int port)(ipv4)
属性
Address  获取或设置终结点的 IP地址。
AddressFamily 获取网际协议 (IP)地址族。(替代 EndPoint.AddressFamily。)
Port   获取或设置终结点的端口号。
字段
MaxPort
指定可以分配给 Port属性的最大值。MaxPort值设置为 0x0000FFFF。此字段为只读。
MinPort
指定可以分配给Port 属性的最小值。此字段为只读。

    IPEndPoint其实就是一个IP地址和端口的绑定,可以代表一个服务,用来Socket通讯

二、DNS相关类
 DNS类有四个静态方法,来获取主机DNS相关信息,
 1、GetHostName()
 通过Dns.GetHostName()可以获得本地计算机的主机名
 2、GetHostByName()
 根据主机名称,返回一个IPHostEntry 对象:
 IPHostEntry GetHostByName(string hostName)
 其中IPHostEntry把一个DNS主机名与一个别名和IP地址的数组相关联,包含三个属性:
  AddressList:一个IPAddress对象的数组
  Aliases:一个字符串对象数组
  HostName:一个用于主机名的字符串对象
 3、GetHostByAddress()
 类似于GetHostByName(),只不过这里的参数是IP地址,而不是主机名,也返回一个IPHostEntry对象。
 IPHostEntry GetHostByAddress(IPAddress address)
 IPHostEntry GetHostByAddress(string address)
 4、Resolve()
 当我们不知道输入的远程主机的地址是哪种格式(主机名或IP地址)时,用以上二种方法来实现,我们可能还要通过判断客户输入的格式,才能正确使用,但dns类提供一更简单的方法Resolve(),该方法可以接受主机名格式或IP地址格式的任何一种地址,并返回IPHostEntry对象。


0 0