【问题标题】:Socket Connections Windows套接字连接窗口
【发布时间】:2011-08-08 14:28:29
【问题描述】:

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

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

我想知道,对于可靠的数据通信,套接字可以允许的连接数是否有任何上限,就像没有数据丢失一样?传送到服务器然后中继到客户端的数据的典型大小约为 40 kbps。

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

【问题讨论】:

    标签: c# .net windows sockets


    【解决方案1】:

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

    对于一个端口允许多个连接的问题,HTTP 服务器可以毫无问题地做到这一点。

    【讨论】:

      【解决方案2】:

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

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

      只要网络带宽可以处理,服务器可以处理任意数量的客户端。如果有几个客户端,您可以将线程用于套接字/客户端,而如果您有很多,我建议您阅读异步处理(BeginXX/EndXX 方法)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        • 2013-09-18
        • 2012-02-27
        相关资源
        最近更新 更多