Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
知道我的数据包来自哪个pcap筛选器_C_Pcap_Libpcap - Fatal编程技术网

知道我的数据包来自哪个pcap筛选器

知道我的数据包来自哪个pcap筛选器,c,pcap,libpcap,C,Pcap,Libpcap,我正在尝试使用libpcap嗅探一些“网络接口”(包括环回) 在我的示例应用程序中,在端口1234、1235和1236中有来自环回的数据包。我已经找到了使用libpcap_setfilter()使libpcap只过滤来自这些地址的数据包的方法:我的目标是将这些数据包相应地转发到它们来自的地址/端口(例如,来自127.0.0.1/1234的数据包可以通过eth0接口;来自127.0.0.1/1235的数据包可以通过eth1转发;来自127.0.0.1/1236的数据包可以通过eth2转发) 我的问

我正在尝试使用libpcap嗅探一些“网络接口”(包括环回)

在我的示例应用程序中,在端口1234、1235和1236中有来自环回的数据包。我已经找到了使用libpcap_setfilter()使libpcap只过滤来自这些地址的数据包的方法:我的目标是将这些数据包相应地转发到它们来自的地址/端口(例如,来自127.0.0.1/1234的数据包可以通过eth0接口;来自127.0.0.1/1235的数据包可以通过eth1转发;来自127.0.0.1/1236的数据包可以通过eth2转发)

我的问题是:有没有办法不必查看数据包的内容就可以准确地知道这些数据包来自哪个端口?例如,我可以设置许多过滤器,并不知何故知道过滤我的数据包的是哪个过滤器

我已经阅读了很多文档和教程,但到目前为止似乎没有一本有用。如果答案是“这是不可能的”,我也可以


提前感谢。

libpcap运行的捕获机制只支持一个过滤器,因此libpcap没有设置多个过滤器的API


但是,您可以为同一网络接口打开多个
pcap\t
,并对其应用不同的过滤器。但是,从多个
pcap\t
读取可能依赖于平台。我从“eth0”、“eth1”和“eth2”推断这是Linux,因此您应该能够使用
select()
poll()
或…在
pcap\u get\u selectable\u fd()
pcap\u t
的返回值上,如果
select()
poll()
或…表示给定描述符可读,则调用
pcap\u dispatch()
在相应的
pcap\u t
上处理该
pcap\u t
的数据包libpcap运行的捕获机制只支持一个过滤器,因此libpcap没有设置多个过滤器的API

但是,您可以为同一网络接口打开多个
pcap\t
,并对其应用不同的过滤器。但是,从多个
pcap\t
读取可能依赖于平台。我从“eth0”、“eth1”和“eth2”推断这是Linux,因此您应该能够使用
select()
poll()
或…在
pcap\u get\u selectable\u fd()
上的
pcap\u t
的返回值上,如果
select()
poll()
或…表示给定描述符可读,则在相应的
pcap\u t
上调用
pcap\u dispatch()
来处理该
pcap\t的数据包