Twisted и ICMP (txNetTools) - PullRequest
       6

Twisted и ICMP (txNetTools)

1 голос
/ 23 февраля 2012

Несколько раз я видел упоминание о том, что для асинхронного пинга хорошо использовать витую.

Я написал реализацию по потокам (типа Пинг сайта в Python? )

Но на ~ 200 потоков я влюблен

На странице http://twistedmatrix.com/trac/wiki/ProjectsUsingTwisted я нахожу txNetTools - Ping, traceroute, icmp и т. д., реализованные в Twisted, и библиотека для тех, кто хочет создавать свои собственные сетевые инструменты.

Кто-нибудь использовал эту библиотеку?

Я пытался использовать его 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'

Может я что-то не так делаю или не понимаю?

P.S. витая 12.0

1 Ответ

3 голосов
/ 23 февраля 2012

Если вы используете sandbox/ping.py, то исключение, о котором вы сообщаете, не имеет смысла.Этот файл имеет этот импорт в начале:

from txnet.icmp import ICMP, Packet, ECHO_REQUEST

Это определяет имя ICMP.Класс Pinger приходит позже, расширяя его.Я могу успешно запустить эту демонстрационную программу (хотя она не работает с нераспознанным типом сообщения при обработке ответа на мою систему).

Возможно, у вас есть старая версия кода, или вы как-то ее изменили, или выполняетедругой ping.py?

...