在 CI 中,将数据报套接字(AF_INET、SOCK_DGRAM)绑定到 INADDR_ANY。然后我会定期使用这个套接字来发送和接收数据报,并使用 pcap 监视数据包的流向。问题是,我无法使用 pcap 判断数据包是传入还是传出。
传输/接收和 pcap 监控在不同的线程中运行,出于同步原因,它们无法通信。我只想跟踪传入的数据包,而不是发送的数据包,所以有人知道我该怎么做吗?
我已经考虑过测试目标IP地址,但我想不出任何方法来获取我的本地IP。正在运行的机器没有静态 ip,更不用说分配的域名,而且似乎 getsockname 在绑定到 INADDR_ANY 的套接字上不起作用。还尝试使用 ioctl(sockfd, SIOCGIFCONF, &buffer),它也不起作用 - 设置 buffer.ifc_len=0。