套接字连接Windows

时间:2011-08-08 14:28:30

标签: c# .net windows sockets

我有一个用C#编写的客户端服务器应用程序

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

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

您能否帮助我了解设计此类解决方案时应考虑的所有参数?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

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

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

只要网络带宽可以处理,服务器就可以根据需要处理多个客户端。如果有一些客户端你可以使用线程来获得套接字/ clien t,而如果你有很多客户端,我建议你阅读异步处理(BeginXX / EndXX方法)。

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