转载自:https://blog.csdn.net/yahohi/article/details/6717500
Nagle算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用 程序系统的效率。(Nagle虽然解决了小封包问题,但也导致了较高的不可预测的延迟,同时降低了吞吐量。)
vc下面socket编程,使用阻塞方式的时候,会自动使用Nagle算法,如:当pc不断发送32Bytes的数据的时候,会将这些包合并起来一起发送。如果另一头使用的时候一个tcp包一条命令处理的话,会出问题的。
在vc里,可以屏蔽掉该算法:
const char chOpt=1;
int nErr=setsockopt( m_socket, IPPROTO_TCP, TCP_NODELAY, &chOpt, sizeof(char));
if(nErr==-1)
{
TRACE(_T("setsockopt() error\n"),WSAGetLastError());
return ;
}