同一端口上的多个套接字 vs 多个端口上的多个套接字

3
让我在提问之前先解释一下我的情况。

我正在创建17种不同的多人在线游戏,可以直接从浏览器中进行游玩。
为了实现这个目标,我选择了Silverlight技术。
通信将使用Sockets完成。

想象一下17种不同类型的游戏,如国际象棋、双陆棋、台球等,数百名在线用户通过绑定到相同端口号的套接字在客户端应用程序和服务器应用程序之间进行通信。

如果每种不同类型的游戏都使用另一个端口号,那么对于我的服务器来说,这样做会更快吗? 国际象棋将使用4502,双陆棋将使用4503,台球将使用4504。
这样做会有所区别吗?还是应该为所有游戏使用相同的端口号4502,而不必担心会发生什么不好的事情?
2个回答

5

已经建立为服务器的套接字可以接受来自多个客户端的连接请求。原始服务器套接字不会成为连接的一部分。accept方法创建一个新的参与连接的套接字,并返回此套接字。服务器的原始套接字仍然可用于监听进一步的连接请求。

因此,使用不同的服务器端口没有优势。毕竟,Web服务器在端口80上获取所有请求并处理得非常好。


新的套接字在不同的端口上吗? - zooropa

3
就您的服务器处理速度而言,无论您是使用一个套接字还是17个套接字接收所有通信,都很可能几乎没有什么区别。使用一个套接字的方法可能会更快一点,因为您的服务器应用程序可能需要切换的线程较少。但是,其他事情将具有更高的开销,例如实际处理游戏移动或授权客户端请求等。
至于是否使用一个或多个套接字的问题,您应该考虑的最重要的事情是部署约束。Silverlight允许使用的TCP端口号是非标准的(即不是80或443),如果在客户端和服务器之间存在防火墙或代理,则最好坚持使用单个端口以使防火墙上的访问控制列表更简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接