远程套接字连接C

远程套接字连接C

我用 C 编写了一个简单的服务器应用程序。我设法使用 telnet 建立了连接。问题是,如果我在 telnet 中指定公共 IP 而不是本地 IP,则无法访问服务器。我的意思是这有效

telnet 192.168.1.2 20600

虽然这没有

telnet 151.53.150.45 20600

我在网上看到这是一个 NAT 配置问题,但端口 20600 似乎是开放的(根据http://www.canyouseeme.org/http://www.yougetsignal.com/tools/open-ports/)此外,我禁用了防火墙,所以这不可能是导致失败的原因......

有什么帮助吗?

答案1

典型的家庭 NAT 旨在确保出站连接可以与外部端点通信。默认情况下,家庭 NAT 不会将外部接口(例如来自您的有线调制解调器提供商)上的端口转发到您的开发箱。

您需要配置 NAT,将端口 20600 上的入站连接转发到 192.168.1.2。这通常称为“端口转发”。查看http://portforward.com/了解大多数硬件选项的详细指南。

关于配置细节的问题更适合http://superuser.com

答案2

您的 192.168.1.2 机器是否在路由器后面?或者它就是路由器?

你通常需要设置端口转发规则,以允许将路由器上端口 20600 的公共流量重定向到 192.168.1.2

答案3

我会戴上我的通灵帽,猜测这里发生了什么。

您有一个客户端,例如192.168.1.3,您可以从它顺利连接到192.168.1.2。但是当您尝试从它连接到 NAT 路由器的外部 IP 时,您什么也得不到。这是因为您位于 NAT 路由器的内部,它既便宜又没有为此配置。为了验证您的服务器是否可以从网络外部访问,您必须尝试从网络外部访问它。

去朋友家尝试连接。如果不行,请确保您在 NAT 设备上正确设置了端口转发。如果仍然不行,请在此处提出新问题并发布一些代码。

相关内容