我遇到桌面应用程序(c#)客户端需要从服务器接收连接的情况。为了避免强制客户端在NAT中打开端口,有人建议使用客户端发起的http持久连接。我不确定这是否是正确的解决方案,因为它似乎有点滥用这个http扩展。这个解决方案还可以,还是有更好的选择我应该考虑一下?
答案 0 :(得分:2)
要通过NAT接收入站连接,必须在NAT上打开端口并将其映射到目标PC的IP地址。如果在NAT上启用了uPNP,则可以通过目标应用程序以可编程方式打开和映射端口,否则NAT管理员必须打开该端口。
另一种选择是改为建立出站连接。它不必在HTTP端口上(除非NAT被管理员锁定),尽管这是最常用的端口,因为大多数NAT /防火墙允许到端口80的出站连接以允许Web浏览器流量。接收服务器不必是实际的HTTP服务器。