Dns.GetHostEntry或Dns.Resolve。如何?

时间:2012-02-04 04:45:10

标签: c# sockets

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。但是如何自动获得它呢?我不想为不同的网络重新编译我的应用程序......

1 个答案:

答案 0 :(得分:1)

来自MSDN上的Socket.Bind

  

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

来自IPAddress.Any

  

Any方法使用Socket字段来表示Any   实例必须在所有网络接口上侦听客户端活动。   0.0.0.0字段相当于点分四位表示法中的IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 14372);

因此,您只需用以下内容替换前三行:

{{1}}