由几个线程同时使用一个socket发送,或接受,安全吗?会出错吗?(每个线城市用自己的用户缓冲区),两个线程同时使用一个socket,一个接受,一个发送,会有问题吗?每个socket是不是对应一个协议缓冲区?小地求教。

解决方案 »

  1.   

    1. 多个发送没有问题,多个接收就有问题了,因为接收是个阻塞过程,到底那个线程优先获得数据呢?一个接收,一个或多个发送也没有问题。
    2. 每个socket是不是对应一个协议缓冲区,是的,而且收和发是分开的。
      

  2.   

    你可以改变思路去实现。
    一个SOCKET负责接收,而另外一个SOCKET负责发送。它们各自在一个线程中实现。
      

  3.   

    多谢各位,再准确的描述:我用一个socket(异步模式下)和远程建立连接,这时我有三个线程,一个负责使用这个socket进行接受,另两个使用这个socket进行不定时的发送,可以吗?
      

  4.   

    我的解决方法:
        用一个线程对该SOCKET进行发送和接收。
        维护一个接收和发送队列(我使用完成端口听时候已经不用考虑发送队列了)
        接收到一个信息后,开另外的线程来处理,该 线程继续接收信息。
      

  5.   

    当然可以,另两个使用这个socket发送的时候,本身有保护机制。
      

  6.   

    你考虑了如果发送不成功会怎样吗,socket的发送缓冲可只有一个啊
      

  7.   

    如果是TCP,并且发送的数据块很大的话,这样是不行的.