5

而已。这是一个新手问题,可能。由于 NAT 和防火墙问题,我几乎放弃了 TcpClient/Listener。我想知道是否有替代方案。端口 80 可能不必处理任何这些烦人的事情。我希望答案是肯定的。

4

3 回答 3

2

WebScockets上的 SignalR怎么样?

于 2013-09-18T12:29:44.047 回答
2

是的,您可以在非浏览器应用程序中实现 WebSocket,但它不会解决您的问题。

当您尝试打开一个侦听 websocket 连接的服务器时,您将遇到与创建普通套接字连接时遇到的相同的问题:个人防火墙解决方案会妨碍您,并且并非每个路由器都会转发您选择的端口. 在这里使用众所周知的端口 80 对您没有帮助。对于普通消费者来说,在他们的 NAT 路由器后面运行网络服务器是非常罕见的,因此默认情况下,除非经过专门配置,否则 NAT 路由器不会转发端口。

除非配置为允许,否则 NAT 路由器通常会阻止其后面的任何主机充当服务器。当您希望用户不用担心他们的 NAT 配置时,两个用户都必须充当客户端。做到这一点的唯一方法是让所有玩家都连接到中央服务器。

虽然托管服务器仍然不是免费的,但由于基于云的托管商会以非常适中的价格向您租用小型虚拟化服务器,因此它变得非常便宜。Amazon EC2的最小实例仅需每小时 2 美分或每月 14.40 美元。或者,您可以使用一些备件构建自己的服务器并将其托管在您自己的互联网连接上。当您没有静态 IP 地址时,您可以使用动态名称服务器服务,例如no-ipDynDNS

于 2013-09-18T13:41:27.237 回答
1

是的,你可以,但请不要。我建议改变你的架构:

使用服务器套接字作为处理客户端的主要点。此服务器必须具有可见的 IP/端口。在这种情况下,您可能有客户支持坚果,请不要打扰。

于 2013-09-18T14:31:47.660 回答