gpt4 book ai didi

C pcap 检测入站数据报

转载 作者:行者123 更新时间:2023-11-30 18:07:56 25 4
gpt4 key购买 nike

在 C 中,我将数据报套接字(AF_INET、SOCK_DGRAM)绑定(bind)到 INADDR_ANY。然后,我定期使用此套接字发送和接收数据报,并使用 pcap 监视数据包流。问题是,我无法使用 pcap 判断数据包是传入还是传出。

传输/接收和 pcap 监控在单独的线程中运行,并且由于同步原因,它们无法通信。我只想跟踪传入的数据包,而不是发送的数据包,所以有人知道我该如何做到这一点吗?

我已经考虑过测试目标 IP 地址,但我无法找到任何方法来获取我的本地 IP。正在运行的机器没有静态 IP,更不用说分配的域名,并且 getsockname 似乎不适用于绑定(bind)到 INADDR_ANY 的套接字。还尝试使用 ioctl(sockfd, SIOCGIFCONF, &buffer),但这也不起作用 - 设置 buffer.ifc_len=0。

最佳答案

找到了解决方案。我可以使用这个获得我自己的IP:

char *command = malloc(100);

sprintf(command,"ifconfig %s|grep -o \"inet addr:[^ ]\"|grep -o -e \"[0-9]\.[0-9]\.[0-9]\.[0-9]*\"",device);

char path[1035];

FILE *fp;

fp = popen(command,"r");

fgets(path, 1034, fp);

pclose(fp);

my_ip = malloc(sizeof(char)*(1+strlen(path)));

memcpy(my_ip, path, strlen(path)-1);

my_ip[strlen(path)-1] = 0;

关于C pcap 检测入站数据报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com