原始套接字recvfrom的问题
我使用原始套接字开发了一个traceroute程序,在接收ICMP数据报的时候,recvfrom会接收到的ICMP报文中不仅有我想要的ICMP响应报文,还有其他的ICMP报文。
比如, 我用windows的 tracert 命令测量路由的同时,我运行我自己写的traceroute程序,在我的程序中也会收到对应于windows tracert命令的ICMP响应报文。此外,我在不同的线程中调用我的traceroute程序,使之并行的运行,各个traceroute程序之间也会相互影响,收到的报文中有对应于其他的traceroute的ICMP响应报文。
我怀疑原始套接字的 recvfrom 操作可能会接收任何ICMP报文,我的问题是,是否可以设置一下,使之只接收对应于自己这个raw socket发送的ICMP响应报文呢?