gpt4 book ai didi

c - 我如何告诉套接字在不关闭它的情况下丢弃所有未决数据?

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:08 24 4
gpt4 key购买 nike

假设我有一个使用套接字的应用程序。

服务器应用程序读取一些数据,对其进行处理,然后服务器突然发现读取的数据有问题。

现在,读取将被中止,客户端发送的所有内容都将被丢弃。

是否有我可以调用的套接字函数来实现此目的?还是我必须 read() 直到套接字中什么都没有?

我不想关闭套接字。只需删除挂起的数据。

最佳答案

如果您想丢弃所有数据并立即中止连接,那么您可以设置SO_LINGER 选项并关闭

setsockopt(fd, SOL_SOCKET, SO_LINGER,
&(struct linger){.l_onoff=1, l_linger=0}, sizeof(struct linger));

这将立即重置连接(它将发送一个 RST 段)。

但是,如果您想抛出一些数据,并保持连接,这可能是行不通的。没有 API(据我所知)告诉内核:“忽略接下来的 100 个字节:我不希望 read 解除对它们的阻塞”。所以您只需调用 read 直到您决定数据再次可用。

关于c - 我如何告诉套接字在不关闭它的情况下丢弃所有未决数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com