Ich bin die BuildProtocol-Methode der ServerFactory ändern, im Grunde die Fabrik hört auf Port 11000 und 12000, und ich habe zwei Protokolle, eines für jeden Port Port. Ich versuche den Port abzurufen, den der Client zum Abhören verwendet hat, damit ich das richtige Protokoll instanziieren kann.Abrufen der Abhörport während BuildProtocol
ex. Client hört an Port 11000 zu, Protokoll 1 wird instanziiert. Client hört an Port 12000 ab, Protokoll 2 wird instanziiert.
ich denke, dies kann nur in der buildProtocol stage getan werden, gibt es eine möglichkeit zu bestimmen, welcher port verwendet wurde, um zu verbinden? Der von BuildProtocol verwendete Adressparameter ist die Clientadresse, ich benötige den Serverport.
Pseudocode:
def buildProtocol(self, address):
if address connects at port 11000:
proto = TransformProtocol()
else:
proto = TransformProtocol2()
proto.factory = self
return proto
Ein kleines Beispiel wäre hilfreich, da es schwierig ist, Ihr Problem zu visualisieren. Es ist auch ein wenig verwirrend, wenn Sie sagen "ex. Client hört Port 11000 ..." Meinst du den Server (im Allgemeinen, Server tun das Zuhören)? – Gerrat
hey gerrat, ja der Server hört bei 11000 und 12000. Was ich möchte, ist separate Protokolle für jeden Port zu haben. Zum Beispiel schreibt protocol1 an Port 11000 den gesamten Text, den der Client sendet, während protocol2 an Port 12000 den gesamten Text, den der Client sendet, in Kleinbuchstaben umwandelt. Im Grunde gibt es also eine Factory-Instanz, aber zwei unterschiedliche Protokolle für jeden die zwei Häfen. – momo
Protokolle haben keinen Bezug zu Ports. Sie sollten Ihre Factory von einer Unterklasse ableiten, um zwei Klassen mit unterschiedlichen Funktionen zu erhalten. Dann binden Sie sie nach Wunsch an Ports. –