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

时间:2009-10-04 22:05:37

标签: silverlight sockets

让我在提出问题之前解释一下我的情景。

我正处于17种不同的多人游戏的创作阶段,可以直接从浏览器在线播放 为实现这一目标,我选择了Silverlight 使用套接字进行通信。

图片17种不同类型的游戏,如Chess,Backgammon,Pool和数百名在线用户使用套接字绑定到同一个PORT编号在客户端应用和服务器应用之间进行通信。

如果每种不同类型的游戏都使用另一个PORT号码,会不会更快(对于我的服务器)?国际象棋将使用4502,步步高将使用4503,游泳池4504 这会有所作为吗?或者我应该为所有游戏使用相同的PORT号码4502而不用担心会发生什么不好的事情?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

就服务器上的处理速度而言,无论是在一个套接字上接收所有通信还是在17接收所有通信,它很可能会产生很小的差别。由于您的服务器应用程序可能会有一个套接字方法,因此速度会快一点更少的线程切换。然而,还有其他事情会有更高的开销,例如实际处理游戏移动或授权客户请求等。

至于是否使用一个或多个套接字的问题,你应该考虑的最大的问题是部署限制。允许Silverlight使用非标准(即不是80或443)的TCP端口号,如果客户端和服务器之间有防火墙或代理,您可能最好坚持使用单个端口来创建访问控制列表防火墙更简单。