TCP多个连接与1个连接(应用程序管理)

时间:2015-01-02 21:42:26

标签: sockets tcp

我需要一些建议......我正在构建一个桌面应用程序,其中每个窗口都需要来自用户的持续输入(诸如点击,键入,鼠标移动等事件)才能发送到服务器。服务器还发送持续反馈,如(刷新对话框中的一些数据,文本,新对象等)

首先我认为我会使用HTTP,但现在选择使用普通的TCP。

我的问题是:我应该使用一个TCP连接并处理来自“应用层”服务器的所有信息,还是应该创建多个连接(如每个窗口一个连接,让操作系统处理多个TCP管道?)

我可以编程这2个想法中的任何一个,但谁在性能和带宽方面更有效?

更新1

  • 就像2000个客户同时使用该系统一样
  • 每个客户端将同时使用2~3个窗口

1 个答案:

答案 0 :(得分:1)

这在很大程度上取决于您的具体应用,但在可能的情况下我会选择多个连接,它有多种优势:

  • 多个组件之间没有线头阻塞(在您的情况下是窗口)。
  • 甚至可以在套接字层上使用多处理/多线程(例如,您可以拥有1个线程/套接字)。
  • 您不需要自己在TCP上构建多路复用器协议。

您不想这样做的唯一原因:

  • 你在短暂的港口短缺。这通常不是问题,除非您谈论成千上万个长寿套接字或者您在一些非常严格的NAT设备后面工作。
  • 每个插槽的操作系统开销(内存/处理能力)是不可忽视的。如果对于任何体面的现代操作系统都是如此,我会感到惊讶,但测量就是知道。
相关问题