1

非同期pingの場合、twistedを使用するのが適切であると何度か言及しました。

スレッドで実装を作成しました(PythonでサイトをPingするなど) 。

しかし、200スレッドまではクラッシュします

http://twistedmatrix.com/trac/wiki/ProjectsUsingTwistedのページで、Twistedに実装されているtxNetTools-Ping、traceroute、icmpなど、および独自のネットワークツールを構築したい人のためのライブラリを見つけました。

誰かがこのライブラリを使用しましたか?

ping.pyを使ってみました:

Traceback (most recent call last):
  File "ping.py", line 23, in <module>
    class Pinger(ICMP):
NameError: name 'ICMP' is not defined

変更した場合:

 class Pinger(**ICMP**):

class Pinger():

Traceback (most recent call last):
  File "ping.py", line 54, in <module>
    reactor.listenICMP(0, Pinger())
  File "./txnet/reactor.py", line 21, in listenICMP
    p.startListening()
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/udp.py", line 102, in startListening
    self._connectToProtocol()
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/udp.py", line 123, in _connectToProtocol
    self.protocol.makeConnection(self)
AttributeError: Pinger instance has no attribute 'makeConnection'

多分私は何か間違ったことをしているのか、理解していないのですか?

PSツイスト12.0

4

1 に答える 1

3

を実行している場合sandbox/ping.py、報告する例外は意味がありません。そのファイルの最初の部分に次のインポートがあります。

from txnet.icmp import ICMP, Packet, ECHO_REQUEST

これはICMP名前を定義します。Pingerクラスは後で来て、それを拡張します。このデモプログラムを正常に実行できます(ただし、システムで応答を処理するときに、認識されないメッセージタイプで失敗します)。

おそらく、古いバージョンのコードを使用しているか、何らかの方法でコードを変更しているか、別のバージョンを実行していますping.pyか?

于 2012-02-23T13:45:38.637 に答える