TcpListener IPAdress.Parse 错误

TcpListener IPAdress.Parse Error

我正在使用 winforms 在 windows 8 上制作一个简单的 server/client 应用程序。该程序工作正常,直到我使用我的外部 IP 地址 50.140.66.104 我收到错误。

System.dll 中发生 'System.Net.Sockets.SocketException' 类型的未处理异常 附加信息:请求的地址在其上下文中无效

我正在使用以下代码:

TcpListener listener = new TcpListener(IPAddress.Parse("50.149.66.104"), 8000);

为什么这个 IP 地址是个问题? 提前致谢!!

我怀疑 IP 地址 50.149.66.104 是您的面向 Internet 的地址。在您的 PC 上合法绑定的唯一 IP 地址是分配给该 PC 上的适配器的地址。您不能绑定到其他人的地址(例如您路由器的互联网地址)。

至于安全性,这里应该没有真正的问题。 IPAddress.Any 所做的只是允许套接字侦听 PC 上存在的所有适配器。如果出于某种原因你想阻止在一个或多个适配器上对你的服务器的入站访问,你可以使用防火墙(Windows' 内置或第三方)来阻止特定适配器上的连接。

请注意,Windows 还将针对特定网络维护单独的策略。即使是相同的适配器也可以配置为仅允许入站连接,例如当适配器连接到已知安全的网络时,与 "Public" 网络相比。

如果您真的想将服务器级别的套接字绑定到计算机中的特定网络适配器,您将需要找到适配器设置的 IP 地址,然后绑定到该地址。不是您的 public IP 地址。