忽略进入TCP套接字

时间:2016-08-24 01:38:41

标签: sockets posix

某些协议(如HTTP)可以指定消息长度,然后发送(可能很长)消息。发送此消息时无法接收其他消息(HTTP / 2.0尝试解决此问题),因此,如果您决定忽略该消息,则无法继续等待消息而不是提取其数据。

通常我会将()消息的长度重复读入垃圾缓冲区并忽略字节。但这涉及将可能数百万字节从内核空间复制到用户空间(每个内存页1个拷贝,因此不是数百万个拷贝)。是不是有一些方法可以告诉内核丢弃字节而不是提供它们?

这似乎是一个显而易见的问题,但我能够提出的唯一答案是奇怪的资源繁重,要么使用splice()将字节转储到管道中并将管道返回到0,或者打开" / dev / null"并使用sendfile()在那里发送字节。我可以这样做,并保留一个(单个)文件描述符,用于从阻塞的连接中清除数据,而无需读取,但是只有...忽略(描述符,长度)函数?

0 个答案:

没有答案