tcp发送不“粘包”的处理(qt和linux)

当使用tcp套接字发送一个很小的数据块时,接收方并不会立即收到,而是等到积累到一定字节后,套接字才会触发相应的接收处理,这种情况并不是我们想要的。我们所需要的是立即响应接收,因此要在发送端做些设置:

若使用qt,可直接使用qt库提供的设置方法:

//socket 是 QTcpSocket 类型的指针
socket->setSocketOption(QAbstractSocket::LowDelayOption, 1);

如果使用linux,则:

//fd是 经 socket函数创建的套接字
int flag = 1;
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int));

 

你可能感兴趣的:(Linux,QT)