こんにちは、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 リリースです。
システムの 1 つが正常に動作しており、デバッグを正しく書き込みます。
dispatch is called
return vaue
34,45,55 whatever it is
しかし、他のシステムは次のとおりです。
dispatch is called
そして何もありません。そのため、ディスパッチ機能でハングアップします。何も返さず、ハングアップします。2 つのシステムは同一ですが、異なるネットワーク上にあります。pcap.openlive のタイムアウトを変更しようとしました。しかし、それは問題ではありません。なぜハングアップするのですか?