Je modifie la méthode buildProtocol de la ServerFactory, fondamentalement l'usine écoute sur les ports 11000 et 12000, et j'ai deux protocoles, un pour le port de chaque port. J'essaie de récupérer le port utilisé par le client pour pouvoir instancier le bon protocole.récupérer le port d'écoute pendant buildProtocol
ex. le client écoute au port 11000, le protocole 1 est instancié. le client écoute au port 12000, le protocole 2 est instancié.
Je pense que cela ne peut être fait que dans l'étape buildProtocol, est-il un moyen de déterminer quel port a été utilisé pour se connecter? le paramètre d'adresse utilisé par buildProtocol est l'adresse du client, j'ai besoin du port du serveur.
code pseudo:
def buildProtocol(self, address):
if address connects at port 11000:
proto = TransformProtocol()
else:
proto = TransformProtocol2()
proto.factory = self
return proto
Un petit exemple serait utile car il est difficile de visualiser votre problème. C'est aussi un peu déroutant quand vous dites "ex client écoute au port 11000 ..." Voulez-vous dire le serveur (en général, les serveurs font l'écoute)? – Gerrat
hey gerrat, oui le serveur écoute à 11000 et 12000. ce que je voudrais faire est d'avoir des protocoles distincts pour chaque port. par exemple, protocole1 sur le port 11000 va mettre en majuscule tout le texte que le client envoie, tandis que le protocole2 sur le port 12000 transformera tout le texte que le client envoie en minuscules .. donc il y a une instance de fabrique, mais deux protocoles différents les deux ports. – momo
Les protocoles sont complètement indépendants des ports. Vous devez sous-classer votre Usine pour avoir deux classes avec des fonctionnalités différentes. Puis les lier aux ports comme vous le souhaitez. –