Pir*_*zek 5 c network-programming pcap libpcap
我试图用libpcap监听两个设备,但我仍然无法找到如何做到这一点.我试图将设备设置为"任何"但它不起作用.我正在尝试编写dhcp中继代理,所以我需要监听eth0和eth1.
我试图创建两个pcap_loops,每个都有不同的设备和处理程序,但只有第一个pcap_loop工作,第二个被忽略.
有什么方法可以做到这一点,还是应该离开libpcap并尝试使用原始套接字?
您需要在单独的线程中运行 pcap_loop(),每个接口一个,我们这样做,并且它有效。
libpcap 的某些部分不是线程安全的,至少是 pcap_setfilter(),因此请提供您自己的锁定。
如果您不想使用线程,则必须自己提供一个事件循环,在其中使用 select/poll 或类似方法监视每个设备的文件描述符。您可以使用 pcap_get_selectable_fd() 获取设备句柄的文件描述符。