【问题标题】:Can't host a winsock server无法托管 winsock 服务器
【发布时间】:2013-04-18 16:06:39
【问题描述】:

我正在使用来自here 的简单 msdn TCP 套接字示例。当我的朋友运行服务器时,或者当我通过本地网络使用它时,一切都很好。但是无法通过互联网连接到我的计算机上运行的服务器。我在路由器中打开了服务器绑定的端口,关闭了Windows防火墙,关闭了杀毒软件,但还是不行!

这是我在 Wireshark 中得到的,但我不知道它是什么意思:

192.168.1.2是我的本地IP,17000是端口,由服务器绑定。我在这里在同一台计算机上运行服务器和客户端。

【问题讨论】:

  • 您没有全球 IP 地址,您需要购买一个才能做到这一点。我建议您阅读更多有关网络、子网和 NAT 的内容。
  • 不需要购买静态IP。朋友可以连接到您当前连接到 Internet 的任何 IP。如果您有动态 IP,只需使用 ipconfig 或其他任何方式查找您当前的 IP,然后将其提供给朋友以进行连接。

标签: sockets networking


【解决方案1】:

在您的机器上运行服务器并在端口17000 上将其bind() 设置为IP 192.168.1.2(或INADDR_ANY 又名0.0.0.0 以绑定到机器的所有可用IP),然后配置您的路由器将端口 17000 上的所有入站流量转发到 IP 192.168.1.2。然后,您的朋友可以通过端口17000 连接到您路由器的公共 IP。如果您的路由器没有您的 ISP 分配的静态 IP,您将不得不使用外部服务查找当前 IP,例如 http://www.whatismyip.com

【讨论】:

  • 嗯,这正是我正在做的。它适用于我的朋友,但是当我托管服务器时它总是失败。
  • 那么要么你的服务器实际上没有在监听(使用 netstat 来验证),要么你的路由器配置不正确,要么你的 ISP 阻止了他们端的端口。如果您确定前两个,那么最后一个可能是他的罪魁祸首。一些 ISP 会阻止他们的客户运行他们自己的服务器,除非您为此支付额外费用。致电您的 ISP 并询问您的特定设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2019-08-04
  • 1970-01-01
相关资源
最近更新 更多