Как прослушивать несколько портов UDP с помощью Twisted?

Я написал сервер, используя Python и библиотеку Twisted, которая взаимодействует через UDP. Все это хорошо работает.

Что я хотел бы сделать, так это расширить этот сервер, чтобы он мог принимать сообщения на несколько портов UDP одновременно (. ​​Я использую разные порты для разделения возвращаемой информации, и это не касается источника запроса ). Сначала я попытался сделать самое простое в качестве теста -Я написал код, который выглядит так:

reactor.listenUDP(port, handler)
reactor.listenUDP(port+1, handler)

(Первая строка изначально была на моем сервере; вторая строка - это второй порт для прослушивания.)

Когда я запускаю это, я получаю следующее:

File "./rspServer.py", line 838, in mainLoop
  reactor.listenUDP(self.args.port+1, udpHandler)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/posixbase.py", line 347, in listenUDP
  p.startListening()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/udp.py", line 86, in startListening
  self._connectToProtocol()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/udp.py", line 106, in _connectToProtocol
  self.protocol.makeConnection(self)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/protocol.py", line 665, in makeConnection
  assert self.transport == None
AssertionError

Я исхожу из этого, что я не могу добавить второго прослушивателя UDP, но это именно то, что я хотел бы сделать (на самом деле, сделать в общей сложности 18 слушателей -это долгая история ). Любые мысли о том, как это сделать?

5
задан Cubs Fan Ron 10 July 2012 в 12:02
поделиться