之前都是搞tcp连接的,最近需要udp连接。感觉有些东西不是很明确。比如用udp作为服务器同时和多个客户连接。怎样才能比较有效的分别和不同的客户端接收数据呢?可能讲得不清楚,比如说吧,tcp是不同的客户端就建立不同的socket,直接从对应的socket等待数据,就可以获取相应的客户的发送过来的数据。udp是不是只能开一个socket读取所有连接过来的客户端的数据,然后再根据获取数据包的ip和端口来确定是哪个相应的客户端的?
感觉这样做比较麻烦,每次获取数据,都要检查相应的ip和端口,然后再判断已经保存的客户端里面有没有这样的客户端,如果存在就把相应的接收到的数据添加到相应的客户端接收缓存里,因为有时候对方的数据可能没法一次完整发送进来,所以要把数据整合,然后处理。 感觉真的很麻烦啊,你们对于处理这种情况有没有比较好的方法啊?

解决方案 »

  1.   

    推荐UDX协议,VTCP库,相对稳定,效率高。
      

  2.   

    你需要在应用层定协议把他们区分开,比如给每个会话分配各唯一的ID,结合ip端口等,或者你用现成的一些开源库,比如utp,UDT,等等
      

  3.   

    TCP调用 accept 后就用接受的 socket 与客户通信,但现在 UDP 只能用一个 socket,是根据对方的IP地址和端口号区分不同的客户的.请参考这里的例子Daytime程序:来自《WinSock网络编程经络》,源码下载地址:http://download.csdn.net/detail/geoff08zhang/4571358