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

Sockets TCP多个连接与1个连接(应用程序管理),sockets,tcp,Sockets,Tcp,我需要一些建议。。。我正在构建一个桌面应用程序,其中每个窗口都需要用户的持续输入(如单击、键入、鼠标移动等事件)才能发送到服务器。服务器还不断发送反馈,如(刷新对话框中的一些数据、文本、新对象等) 首先我想我会使用HTTP,但现在选择使用普通TCP 我的问题是:我应该使用一个TCP连接并在“应用程序层”处理来自服务器的所有信息,还是应该创建多个连接(比如每个窗口一个连接并让操作系统处理多个TCP管道) 我可以对这两个想法中的任何一个进行编程,但在性能和带宽方面谁会更有效率 更新1 就像2000

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

首先我想我会使用HTTP,但现在选择使用普通TCP

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

我可以对这两个想法中的任何一个进行编程,但在性能和带宽方面谁会更有效率

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

这在很大程度上取决于您的特定应用程序,但如果可能,我会选择多个连接,它有多个优点:

  • 在多个组件(在您的情况下为窗口)之间没有线头阻塞
  • 即使在套接字层上也可以使用多处理/多线程(例如,您可以有1个线程/套接字)
  • 您不需要自己在TCP之上构建多路复用器协议
您不想这样做的唯一原因是:

  • 你缺少短暂的港口。这通常不是一个问题,除非您正在讨论成千上万的长寿命套接字,或者您正在使用一些非常严格的NAT设备
  • 每个插槽的操作系统开销(内存/处理能力)是不可忽略的。如果这对任何一个像样的现代操作系统来说都是真的,我会感到惊讶,但测量是知道的

有多少客户端将连接到此服务器?嗨,Floegipoky!我将有2000个客户端,每个客户端将使用2~3个窗口。ThanksHmm,这是初始需求的边界。如果你能保证这些数字,你会没事的。但是,如果你有可能拥有更多的用户和更多的窗口,你很容易就会遇到限制。我想说的是,在客户端上实现连接逻辑的方式是,您可以在后端添加更多服务器,而不需要更新客户端,以防万一。是的,我认为是分布式服务器。运行ServerApp的多个虚拟机,每个虚拟机共享一个公共数据库(Oracle、MySQL或SQLServer),谢谢。我期待着使用多个连接,我只是担心从服务器端的角度来看,6000个活着的连接可能会成为一个问题?@user3558040不应该是,任何体面的服务器平台都应该能够处理这个问题,不管怎样,就套接字资源而言:)。服务器没有临时端口的问题,通常您在操作系统中有更大的发言权,以避免套接字开销问题。