【问题标题】:TcpListener on different network不同网络上的 TcpListener
【发布时间】:2014-10-23 08:19:47
【问题描述】:
当我在不同的网络上时,我无法连接到 TCP 服务器
我正在尝试连接到我在另一个网络上创建的 Tcp 服务器,但运气不好。有没有办法做到这一点?
我需要输入客户端程序的 IP 地址是什么?
如果您在网络上,服务器工作正常,但如果我在不同的网络上,如何连接?
我尝试使用外部 IP 地址连接,但消息只是在路由器上,我如何让路由器将消息发送到我的 PC?
【问题讨论】:
标签:
c#
networking
tcpclient
【解决方案1】:
您的 TCP 服务器应位于具有公共(外部)IP 地址的系统上。客户端即使在 LAN 内也可以连接到服务器。请注意,局域网中的 IP 地址与外部 IP 地址不同。翻译称为 NAT。
因此,由于您的服务器在 LAN 内的计算机上运行,因此 Internet 上的其他计算机无法访问它。另一方面,您的路由器有一个可以从 Internet 访问的公共 IP 地址。您可以将路由器配置为将端口转发到您的计算机,以便您的路由器将您的服务器与互联网连接。请注意,端口转发通常是一种不好的安全做法。确保您选择的端口号未被任何其他程序使用。
还要记住,从客户端到服务器的 TCP 流量可能是未加密的。这意味着您的流量将容易受到中间人攻击。您应该尝试建立使用 SSL 的连接。 (注意:SSL 不等于 https)更多信息请查看 OSI-model。