winsock 的 NODELAY 和 SO_SNDBUF 设置问题
发送端使用TCP协议,阻塞方式:
当发送端设置了 TCP_NODELAY 后,SO_SNDBUF 还起作用吗?
按照MSDN里面的说法,当设置TCP_NODELAY 后,winsock就禁用了Nagle算法,发送端调用了send函数后,数据就直接被投递到网络上了。那么是不是说send函数中的数据不再被copy到SNDBUF中了?
另一个问题:
设置TCP_NODELAY 的时候,调用send函数返回后表示数据已经被投递到网络上了。
当send函数还没有返回的时候,它在等待什么呢,是等待网络设备接收数据吗?
应用程序有没有办法减少这个等待时间,或者取得一个需要等待多长时间的值?