1、Socket异步通讯,做服务端时,希望设置终端一定时间内部上传数据就断开;异步设置receivetimeout是不是无效?
(不想利用循环来遍历socket接收时间,感觉太耗资源了)
2、Socket设置nodelay=true,然后调用socket.send 或者beginsend 是不是就可以将数据发送出去,而不用等缓冲区满??
(阻塞模式)如果是的话,nodelay对beginreceive有影响吗???3、关于socket缓冲区的问题,socket发送数据是不是有2个条件,一个是缓冲区满;另外一个是不是一定的时间;
比方说 socket调用send之后长时间没有再次调用,数据肯定是发出去了,(缓冲区没有满)。是不是如果超过了一定时间,不管满不满都发送呢??不懂底层,有点晕,期待高手们指点迷津,谢谢了~~
 

解决方案 »

  1.   

    高手们,大虾们,看过来吧~~~QQQ
      

  2.   

    1.receivetimeout仅适用于同步的receive,异步不适用
    2.nodelay=true,Nagle 算法使套接字缓冲最多 200 毫秒内的数据包,然后使用一个数据包发送它们,从而减少网络流量,基本是发送就可以发送出去了
    3.socket基本是超过一定时间不管满不满都会发送出去的,除非你的程序对时间同步有很大的要求,不然这些底层的事你不用去管,就send就可以了