1

こんにちは、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 のタイムアウトを変更しようとしました。しかし、それは問題ではありません。なぜハングアップするのですか?

4

0 に答える 0