嗅探所有网络接口

我编写了一个程序,它使用套接字来捕获网络接口上的数据包。首先,我使用gethostbyname收集机器的所有IP,然后使用SOCK_RAW,IPPROTO_IP和SIO_RCVALL选项将原始套接字绑定到每个ip。为每个在相应套接字上调用recv的IP执行一个线程(每个ip一个套接字)。这个程序工作正常。 但我找到了一个名为INADDR_ANY的特殊地址。 MSDN说SIO_RCVALL不能和INADDR_ANY一起使用,它在这里:   套接字也必须绑定到   显式本地IPv4或IPv6接口,   这意味着你无法绑定   INADDR_ANY或in6addr_any。 是否可以使用一个插槽监视和捕获所有数据包(与本地计算机相关的数据包而不是其他计算机的数据包)? 谢谢     
已邀请:
INADDR_ANY
表示“我不关心哪个本地地址”,而不是“所有本地地址”。 来自MSDN:   如果应用程序不关心分配了什么本地地址,请为IPv4本地地址指定常量值
INADDR_ANY
,或在name参数的
sa_data
成员中指定IPv6本地地址的常量值
in6addr_any
。这允许底层服务提供者使用任何适当的网络地址,可能在存在多宿主主机(即具有多个网络接口和地址的主机)的情况下简化应用程序编程。     

要回复问题请先登录注册