【问题标题】:TcpListener IPAdress.Parse ErrorTcpListener IPAdress.Parse 错误
【发布时间】:2015-03-19 07:41:56
【问题描述】:

我正在使用 winforms 在 Windows 8 上制作一个简单的服务器/客户端应用程序。该程序运行良好,直到我使用我的外部 IP 地址 50.140.66.104 我得到错误。

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

我正在使用以下代码:

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

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

【问题讨论】:

  • 你为什么不使用IPAddress.Any 作为听众?指定一个 IP 地址将只允许来自该 IP 地址的传入连接。
  • 我做到了,它有效。但我知道这会降低安全性。你知道我该如何应对吗?

标签: c# windows tcp tcpclient tcplistener


【解决方案1】:

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

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

请注意,Windows 还将为特定网络维护单独的策略。即使是同一个适配器也可以配置为仅允许入站连接,例如当适配器连接到已知安全网络时,而不是“公共”网络。

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

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2018-10-07
    • 2014-03-06
    相关资源
    最近更新 更多