使用VC ++ 2010,.NET 4
有没有办法自动找到与TcpListener一起使用的本地IP地址?我现在可以手动输入一个:
Int32 port = 36457;
IPAddress^ localAddr = IPAddress::Parse("192.168.1.254");
TcpListener^ server = gcnew TcpListener(localAddr, port);
但是在另一台机器上打开会失败。
答案 0 :(得分:0)
没有真正的方法可以找到计算机的本地IP地址,因为它可以是多个网络的一部分,并且每个网络可以有多个IP地址。 (我的计算机有大约10个网络,我在一个网络上有4个IP地址的服务器)
要绑定的唯一可移植地址是0.0.0.0和127.0.0.1网络。绑定到127.0.0.1(也称为别名localhost使其只能从计算机本身而不是从网络访问。绑定到0.0.0.0使其可以在每个网络上的每个地址上访问。必须相应地设置防火墙规则。而不是0.0.0.0你也可以使用IPAddress.Any。
大多数应用程序允许用户通过配置文件,命令行参数或直接询问用户来设置它。
答案 1 :(得分:0)
如果您希望在所有连接的网络上收听,您可以使用" localhost"而不是ip地址。
答案 2 :(得分:0)
为什么不使用IPAddress.Any或IPAddress.IPv6Any?这样,您的网络状况将自动检测到。通常,我不会使用特定的IP地址,除非您事先知道正在使用哪个服务器使用静态IP,即使这样我也将自己限制在某种配置文件中指定的服务器。