我有一个用C#编写的客户端服务器应用程序
服务器侦听指定的端口。客户端将数据推送到此服务器,其余客户端将提取此数据。同样,所有客户端都使用此服务器。
我想知道,在没有数据丢失的情况下,套接字可以允许与数据进行可靠通信的连接数是否有上限?传送到服务器然后中继到客户端的数据的典型大小约为40 kbps。
您能否帮助我了解设计此类解决方案时应考虑的所有参数?
答案 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)不要阻塞网络连接。