Dns.GetHostEntry or Dns.Resolve. How to?

本文关键字:Dns to How Resolve GetHostEntry or | 更新日期: 2023-09-27 18:22:45

IPHostEntry ipHost = Dns.Resolve("192.168.182.1");
        IPAddress ipAddr = ipHost.AddressList[0];
        IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 14372);

        wSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        wSocket.Bind(ipEndPoint);

这就是我创建套接字连接的方式。如您所见,主机 IP 是手动设置的。但是如何自动获得它呢?我不想为不同的网络重新编译我的应用程序......

Dns.GetHostEntry or Dns.Resolve. How to?

来自 MSDN 上的 Socket.Bind :

如果您不关心分配哪个本地地址,则可以创建一个 IPEndPoint使用 IPAddress.Any 作为地址参数,并且 底层服务提供商将分配最合适的网络 地址。如果您有以下情况,这可能有助于简化您的应用程序 多个网络接口。

来自 IPAddress.Any:

Socket.Bind方法使用Any字段来指示Socket 实例必须侦听所有网络接口上的客户端活动。 Any字段等效于点分四边形表示法中的0.0.0.0

因此,您可以简单地将前三行替换为:

IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 14372);