2011-08-08 47 views
1

我有用C#编写的客户端服务器应用程序Socket连接Windows

服务器侦听指定的端口。客户端将数据推送到此服务器,其余客户端将此数据提取出来。同样所有的客户端都使用这个服务器。

我想知道,在没有数据丢失的情况下,套接字可以允许哪些数据连接可靠地进行数据通信?传送到服务器然后中继到客户端的数据的典型大小约为40 kbps。

你能帮我理解设计这样一个解决方案时应该考虑的所有参数吗?

回答

0

上行带宽将是您最大的瓶颈。 如果用“40 kbps”表示每秒千位BITS而不是每秒千字节,那么就是5 KB/s。如果您的上行带宽是每秒1兆比特(每秒128千字节),那么您只能拥有(128/5)25个客户端。

为了在一个端口问题上允许多个连接,HTTP服务器可以毫无问题地执行此操作。

-1

实际上一个套接字将不处理服务器中的所有数据。在服务器上你有一个监听套接字,其目的仅仅是接受来自客户端的传入连接。然后你得到一个连接/每个客户端套接字。

操作系统将尝试在所有连接的套接字(您的和其他应用程序)之间均匀分配带宽。 UDP套接字比TCP套接字具有更高的优先级。

只要网络带宽可以处理它,服务器就可以根据需要对待多个客户端。如果有几个客户端,你可以使用线程作为套接字/客户端,而如果你有很多客户端,我建议你阅读异步处理(BeginXX/EndXX方法)。

如果带宽是一个问题,您应该限制发送和接收(最简单的方法是使用Thread.Sleep)不要窒息网络连接。

+0

请激励投票。 – jgauffin