使用 http 持久连接而不是套接字

Use http persistent connections instead of sockets

我遇到桌面应用程序 (c#) 客户端需要从服务器接收连接的情况。为了避免强制客户端在其 NAT 中打开端口,有人建议改用客户端发起的 http 持久连接。我不确定这是正确的解决方案,因为它似乎有点滥用此 http 扩展。这个解决方案没问题,还是我应该研究一下更好的替代方案?

要通过 NAT 接收 入站 连接,必须在 NAT 上打开一个端口并将其映射到目标 PC 的 IP 地址。如果在 NAT 上启用了 uPNP,则目标应用程序可以打开和映射端口,否则 NAT 管理员必须打开端口。

另一种选择是建立出站 连接。它不必在 HTTP 端口上(除非 NAT 被管理员锁定),尽管这是最常用的端口,因为大多数 NATs/firewalls 允许到端口 80 的出站连接以允许 Web 浏览器流量。接收服务器不必是实际的 HTTP 服务器。