1.Dns是什么?
首先看一下 客户端部分网络连接对Dns的应用
1.IPHostEntry iPHostEntry = Dns.GetHostEntry(ipAddress);
什么时候使用这个方法呢?
当ipAddress是域名的时候 使用这个方法把域名转换为ip
2.
DNSState dNSState = new DNSState();
dNSState.hostName = address;
dNSState.port = port;
Dns.BeginGetHostAddresses(hostNameOrAddress, GetIPAddressCallback, dNSState);
异步返回指定主机的IP地址 hostNameOrAddress是域名
public void GetIPAddressCallback(IAsyncResult ar) {
try {
DNSState dnsContent = (DNSState)ar.AsyncState;
dnsContent.resolvedIPs = Dns.EndGetHostAddresses(ar);
_dnsInfo = dnsContent;
Connect(_dnsInfo);
} catch(Exception exc) {
}
}
3.
dnsContent.resolvedIPs = Dns.EndGetHostAddresses(ar);
结束对DNS信息的异步请求 用于保存由BeginGetHostAddresses的hostNameOrAddress参数指定的IP地址
由以上三个例子可以看出Dns的作用是: 将域名解析成主机能识别的IP地址
PS:
域名是什么? WWW.Baidu.com 就是域名;
192.168.0.1 就是IP地址
2.IPHostEntry/IPAddress/IPEndPort是什么?
IPHostEntry :
是一个容器类 将域名系统(Dns)主机名和别名(IPHostEntry.Aliases)与匹配的IP地址关联 它提供主机的ip地址(借助IPAddress类) 主机名及别名
eg:
IPHostEntry iPHostEntry = Dns.GetHostEntry(ipAddress);
Dns(域名系统)把域名 ipAddress 通过GetHostEntry 方法转换为 iPHostEntry
iPHostEntry.AddressList[0] 就是 ipAddress 对应的IP地址
IPAddress:
主机能识别的IP地址
1.把string类型的ip地址转换成IPAddress类型的参数
IPAddress.TryParse(ipAddress, out address)
ipAddress string类型参数
address IPAddress类型参数
IPEndPort:
是 IP地址+端口号
IPEndPort iPEndPoint = new IPEndPoint(IPAddress address,int port);
eg:
_socket.BeginConnect(iPEndPoint, ConnetSuccess, _socket);