【问题标题】:Multiple Sockets on the same port vs Multiple Sockets on multiple ports同一端口上的多个套接字与多个端口上的多个套接字
【发布时间】:2009-10-05 06:44:41
【问题描述】:

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

我正处于 17 种不同的多人游戏的创作阶段,这些游戏可以直接从浏览器在线玩。
为此,我选择了 Silverlight。
将使用套接字进行通信。

图片 17 种不同类型的游戏,例如国际象棋、西洋双陆棋、台球以及数百个在线用户使用绑定到相同端口号的套接字在客户端应用程序和服务器应用程序之间进行通信。

如果每种不同类型的游戏都使用另一个端口号,会不会更快(对于我的服务器)?国际象棋将使用 4502,双陆棋将使用 4503,台球将使用 4504。
这会有所作为吗?或者我应该为所有游戏使用相同的端口号 4502,而不用担心会发生不好的事情?

【问题讨论】:

    标签: silverlight sockets


    【解决方案1】:

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

    因此使用不同的服务器端口没有任何优势。毕竟所有网络服务器都在端口 80 上获得了所有请求并很好地处理了这一点。

    【讨论】:

    • 新套接字是否在不同的端口上?
    【解决方案2】:

    就您的服务器上的处理速度而言,无论您是在一个套接字还是 17 个套接字上接收所有通信,很可能几乎没有什么区别。单套接字方法会快一点,因为您的服务器应用程序可能有更少的线程之间切换。然而,还有其他一些事情会产生更高的开销,例如实际处理游戏动作或授权客户端请求等。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多