用UDP实现语音数据发包, 中间有中转服务器(用的是NAT穿越方式),请问下发送客户端能开两个socket吗? 一个用来发送语音包,一个用来接受语音包.要注意什么? 现在我遇到的问题是第2个接受socket收不到包,怀疑是端口的问题,我每个socket都绑定了不同的端口. 各位帮忙了谢谢~~

解决方案 »

  1.   

    主要是中间还有个NAT穿越防火墙的问题, 中转服务器不能往我的接受socket发包,因为它不知道接受socket的IP和端口. 只能往我发送socket发包.
      

  2.   

    可以用两个,两个都需要“打洞”。不过没必要用两个,socket本身就是全双工的。
      

  3.   


    你说的是端口复用吗,,好像不行吧,,因为端口好象同时只能有一个socket再操作,即另一个socket要处于TIME_WAIT状态.这样就引发另外一个问题,,以为语音包是一值在发送的,,间隔20MS吧,,发送socket不能等待啊,,要不就会有延迟.
      

  4.   


    如果是一个socket的话,,一个发送线程,一个接受线程, 如过socket发送缓冲区有数据在发送的话,,这样接受线程就会被阻塞,,会造成语音延迟吧,,还有同步的问题...两个socket就好多了...
      

  5.   

    一个socket能在本机进行收发包的测试吗