【发布时间】:2010-09-17 13:57:43
【问题描述】:
我正在 Linux 下编写一个 C/C++ 应用程序,它从原始套接字读取数据(用于 ICMP 数据包)。问题:有没有办法丢弃仍在套接字上排队的所有数据?
问题是休眠了一段时间后,socket上有我不感兴趣的数据排队;所以最好只是告诉套接字“忘记你现在缓冲的所有数据”,这样如果我进入一个 select()/recvfrom() 循环,我只会得到最近收到的数据。
有没有比先进入单独的 poll()/recvfrom() 循环更好的方法?可能是一些套接字 API 调用?便携,甚至? :-)
【问题讨论】:
标签: linux sockets flush raw-sockets