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