嗨,我有一个程序,我在其中使用 python 中的 pcap 捕获数据包。
filter=some_filter
promiscuous= True
read_timeout= 50 # msec
self.pcap= pcapy.open_live(self.ifname, self.conf.capture_snaplen, promiscuous, read_timeout)
self.pcap.setfilter(filter)
这是配置,我用我的回调调用调度函数。打印语句用于调试
while True:
print "dispatch is called"
return_value=self.pcap.dispatch(packet_limit, self.distribute_packet)
print "return value"
print return_value
所以我在 2 台不同网络的主机上运行这个系统。Oses 是 freebsd 9.0 版本
其中一个系统运行良好,它真实地编写了我的调试;
dispatch is called
return vaue
34,45,55 whatever it is
但另一个系统是;
dispatch is called
没事了。所以它挂断了调度功能。它不返回任何内容并挂断。两个系统相同,但它们位于不同的网络上。我试图更改 pcap.openlive 的超时。但这无关紧要。为什么会挂机?