我使用boost::asio写的一个,大致原理是在服务器创建一个socket,设置好这个socket的协议并绑定好port这些。
现在 服务器就可以在这个socket上接收客户端发来的数据了,并且通过这个socket返回数据。我的问题是 ,如果客户端有多个,比如说上千个客户端都向这个服务器发送数据,服务器要应付这么多的数据,就用这一个socket来负责收、发数据,效率上会不会很慢呢??(因为我看过tcp服务器的做法,一般是为每一个连接建立一个socket,这样服务器将使用不同的socket来分别处理不同的客户端)

解决方案 »

  1.   

    一般都自己做相对应的负荷分担的。。比如开始连接的时候就给服务器会下发一个新的IP和PORT的。
      

  2.   

    UDP与TCP是不同的,TCP必须每个连接一个socket,而UDP没有连接的概念,可以同时与多个客户端通信.当对方发送过来数据时你调用recvfrom的第5个参数能知道对方的地址,发送时向这个地址发送数据就行了.你可以找这里的Daytime看一下,用UDP实现的:
    http://download.csdn.net/detail/geoff08zhang/4571358