程序采取C/S模式,可能存在一个服务端连接大量客户端的情况。
C#中应该采用什么方法来实现一种效率比较高,开销比较小的方案?
是为每一个客户端维持一个连接,还是说和客户端建立连接,等客户端和服务端的数据传送完毕后断开连接?还有,应该采用什么样的方式进行连接?是为每一个连接开一个线程吗?谢谢各位赏光~UP有分~解决的大人单独开帖赠送200分

解决方案 »

  1.   

    Socket, TcpClient UdpClient都可以的
      

  2.   

    还有,应该采用什么样的方式进行连接?是为每一个连接开一个线程吗?一个连接建立一个socket进行通讯。
      

  3.   

    TCP如果需要维持大量连接我觉得比较好的办法就是
    用户来请求连接,使用完以后就断开
    这样可以提供较多的tcp连接
      

  4.   

    To wangsaokui(无间道III(终极无间)) 你说的方法我正在看,但是这样的话开销会不会很大呢?因为客户端是大量的。To Yamir2004(学习中..说错了别骂人,多指点..) 如果客户端和服务端需要比较频繁的通讯的话,
    使用完毕就断开然后重新连接会不会效率比较低?谢谢两位
      

  5.   

    应对的方式有很多,要看实际需要来定前置条件:大量客户端连接,而且很频繁1.如果不在乎成本可以再开一台连接服务器,用这台服务器来做负载均衡,分配任务到局域网内的Application Servers2.不想开服务器的话
    2.1操作具有持续性,需要保留状态,那么让后来的客户排队(等待)
    2.1操作是可中断的,不需要保留状态,那么做完一次操作就断开
      

  6.   

    用UdpClient吧,只不过在拼凑文件是麻烦点!
      

  7.   

    程序采取C/S模式,可能存在一个服务端连接大量客户端的情况。
    C#中应该采用什么方法来实现一种效率比较高,开销比较小的方案?这个问题你可以参看《Windowas 网络编程技术》,我觉得可以用重叠I/0的模式效率最好。
      

  8.   

    我觉得还是使用异步的socket比较好
    只要一个连接就可以,双方通讯的时候加一个head来标志通讯双方的身份,这样就可以复用这个连接!
    而且异步socket是为每一次的send和receive开一个线程的,效率还是比较高的
      

  9.   

    如果客户端和服务端需要比较频繁的通讯的话,
    使用完毕就断开然后重新连接会不会效率比较低?在tcp连接下,效率肯定要比一直连接的时候高的多
    一直保持tcp连接很消耗资源,而且肯定有一个连接数上限
      

  10.   

    你如果觉得麻烦直接做一个FTP在服务器上,客户端有数据直接传到服务器的固定目录
    服务器开一个线程检测该目录并处理数据,处理后删除