我编写了一个程序,它使用套接字捕获网络接口上的数据包。首先,我使用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。
是否可以使用一个套接字监视和捕获所有数据包(与本地计算机相关的数据包,而不是其他计算机的数据包)?
谢谢