Ich versuche, ein Netzwerk mit asynchron TCP-Servern und Sockets zu simulieren. Ich habe einen example from documentation als Ausgangspunkt für meine Aufgabe verwendet. Hier ist der Code meiner Serverklasse:Python Async-TCP-Server: kann keine Sockets aus ihm
import asyncio
import socket
import Node
class ServerProtocol(asyncio.Protocol):
def __init__(self, hostNode):
self.hostNode = hostNode
def connection_made(self, transport):
peername = transport.get_extra_info('peername')
print('Connection from {}'.format(peername))
self.transport = transport
def data_received(self, data):
print('Data received: {!r}'.format(data))
self.hostNode.processIncomingMessage(data)
class NodeServer:
def __init__(self, hostNode):
self.loop = asyncio.get_event_loop()
self.hostNode = hostNode
def startListening(self):
self.coro = self.loop.create_server(ServerProtocol(self.hostNode), '', 0, family=socket.AF_INET)
server = self.loop.run_until_complete(self.coro)
def getPortNumber(self):
print(self.coro.sockets)
portNumber = self.coro.sockets[0].getpeername()[1]
print(portNumber)
return portNumber
Ich nenne create_server
Funktion mit params ''
, 0
und family=socket.AF_INET
weil ich brauche IPv4-Version zu etablieren und das Betriebssystem muß entsprechendes zufälliges Port geben zu hören. Im folgenden Code versuche ich eine Anzahl von Ports zu bekommen. Documentation says, create_server
Funktion gibt Server
Objekt und sockets can be retrieved von sockets
Attribut zurück. Aber , wenn ich den Code ausführen, erhalte ich Fehler folgende:
AttributeError: 'generator' object has no attribute 'sockets'
Es passiert, wenn self.coro.sockets
So Ausführung, das ist das Problem.
Könnte mir bitte jemand dabei helfen?
Vielen Dank.
Danke. Es hat wirklich gekippt. Kann ich dir eine andere Frage stellen? –