Twisted Framework Server Herstellen von Verbindungen als Client?
assen Sie mich zunächst meinen Code und den zurückgegebenen Fehler anzeigen:
print "before import"
from twisted.internet import protocol # imports
print "after protocol"
from twisted.internet import reactor
print "after reactor"
from twisted.internet.endpoints import TCP4ServerEndpoint
print "after import"
class Echo(protocol.Protocol):
"""docstring for Echo"""
def connectionMade(self):
cADDR = self.clnt = self.transport.getPeer().host
print "...Connection made with {0}".format(cADDR)
def dataReceived(self, data):
self.transport.write(data)
class EchoFactory(protocol.Factory):
"""docstring for EchoFactory"""
def buildProtocol(self, addr):
return Echo()
server = TCP4ServerEndpoint(reactor, 45002)
server.listen(EchoFactory())
reactor.run()
Wie Sie sehen, habe ich einige print-Anweisungen erstellt, um zu debuggen, welcher Import das Problem verursacht. Nun zum Fehler:
before import
after protocol
Traceback (most recent call last):
File "C:\Users\Sa'id\Documents\Learning Programming\Python\Core Python Application Programming\Chapter 2 - Network Programming\Twisted\twisted_intro.py", line 9, in <module>
from twisted.internet import reactor
File "C:\Python27\lib\site-packages\twisted\internet\reactor.py", line 39, in <module>
default.install()
File "C:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 196, in install
reactor = SelectReactor()
File "C:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 72, in __init__
posixbase.PosixReactorBase.__init__(self)
File "C:\Python27\lib\site-packages\twisted\internet\base.py", line 499, in __init__
self.installWaker()
File "C:\Python27\lib\site-packages\twisted\internet\posixbase.py", line 286, in installWaker
self.waker = self._wakerFactory(self)
File "C:\Python27\lib\site-packages\twisted\internet\posixbase.py", line 81, in __init__
client.connect(server.getsockname())
File "C:\Python27\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 10061] No connection could be made because the target machine actively refused it
>>>
Aus irgendeinem Grund versucht mein Twisted-Server, Verbindungen herzustellen. In Wirklichkeit sollte es derjenige sein, der auf die Verbindungen wartet und sie nicht herstellt. Und wie Sie an dem Fehler erkennen können, wird unmittelbar vor dem @ gedruckreactor
importieren, aber nicht danach, so dass diereactor
ist hier wirklich das Thema. Ich habe dies auf einer anderen Website ohne großen Erfolg gepostet, aber der Antwortende sagte, dass dies daran lag, dass der Reaktor versuchte, ein @ einzurichte_SocketWaker
und etwas hat es daran gehindert, es einzurichten. Er sagte, dass das Ausschalten Ihrer Firewall zum Funktionieren führen würde, aber nach dem Versuch wurde derselbe Fehler zurückgegeben. Nur eine Anmerkung, der Port, den ich hosteEcho()
server on wird an den Port weitergeleitet, daher ist der Port wahrscheinlich nicht das Problem. Jede Eingabe wäre sehr dankbar.
Vielen Dank