我的客户端程序要接受10台服务器的视频数据。 
方案1:用udp传输,客户端创建一个socket,绑定自己ip,一固定端口,只开辟一个线程,用该scoket来发送接受10台服务器所有控制命令,并用该socket来接受10台服务器的视频数据,对于收到的数据,我通过ip和端口来判断是哪台服务器的数据。这样可行不?会有啥问题? 
方案2:用tcp传输,客户端创建一个socket,connect 10个服务器(这行的通不?)只开辟一个线程(还是要开辟10个线程啊),用该scoket来发送接受10台服务器所有控制命令,并用该socket来接受10台服务器的视频数据,对于收到的数据,我通过ip和端口来判断是哪台服务器的数据。这样可行不?会有啥问题? 

解决方案 »

  1.   

    两种都可行。UDP可能会有丢包现象;TCP效率较低,占用资源略多一些。如果可以忽略丢包,建议用UDP。
      

  2.   

    一个socketconnect 10个服务器,这个可以么?我感觉不可以吧,从来没这么用过
      

  3.   

    10台服务器的图像数据如果是各自独立的,我建议用tcp,一个sock管一个
      

  4.   

    顶这个。
    也许可以使用SCTP(流控制传输协议结合了TCP 和UDP 的优点).
      

  5.   

    TCP和UDP都是点对点的
    1对10不行呀
      

  6.   

    方法1 。可行的,但UDP会丢包,地球都知道。 
    方法2.一个socekt连接10个ip 肯定有问题
         最好是一个连接 建立一个线程来实现。 
      

  7.   

    传输视频数据还是用UDP的好,即使丢失数据也不会造成大的影响。
    但是用一个Socket 连接10台服务器,会有很大问题。
    客户端请求哪个服务器的视频就跟那个服务器建立连接就行。
    对于方案2 用TCP来传输控制命令信息会更好些。
      

  8.   

    我想知道你的方案1:用udp传输,实现1对10 是具体怎么实现的,就是接受到客户端是怎么处理是那个客户端的,能够实时接收到数据么,能否吧源码发过来共同研究一下,
      

  9.   

    1、任何SOCKET,都是点对点的,这是SOCKET机制的本质
    2、视频数据是流数据,明显应该用TCP,UDP不能保证数据包接收次序与发送次序一至,而TCP具备流控制机制
    3、你这种需求的最佳逻辑是10个SOCKET,10个线程互不干扰
      

  10.   


    本人不同意你的观点,UDP可以不是点对点,可以使1对多 同意的鲜花送来。