忽略Linux TCP套接字上的传入字节

时间:2014-01-12 13:34:50

标签: c linux sockets tcp

我想连接到服务器,并同步写入(2)。

在某些时候,缓冲区正在填满,我需要阅读(2)让我继续写作。

read(2)当然是不必要地复制大量字节,如果我不知道要多少字节就会阻塞它。

如何丢弃TCP套接字上的传入字节?

我已尝试ioctl(sockfd, I_SRDOPT, RMSGD),但它正在返回错误EFAULT Bad address

1 个答案:

答案 0 :(得分:2)

您可以在非阻塞模式下使用套接字来定期使用传入数据而不会阻塞。引用tutorial

  

如果在非阻塞模式下调用recv(),它将返回系统在该套接字的读缓冲区中的所有数据。但是,它不会等待那些数据。如果读缓冲区为空,系统将立即从recv()返回“操作将阻塞!”。