La suggestion de Greg d'essayer de se familiariser avec Python avant d'essayer de prendre Twisted est peut-être raisonnable. Limiter les sources possibles de votre confusion peut vous aider à éviter certains cas très frustrants. D'autre part, je connais beaucoup de gens qui prennent un projet basé sur Twisted comme une première expérience d'apprentissage Python, et réussissent. Donc c'est possible. Et vous devrez faire quelque chose d'abord. Il n'y a aucune garantie que ce que vous choisissez à la place de Twisted sera plus facile. :)
En ce qui concerne les spécificités de telnet, vous devez utiliser twisted.conch.telnet
, et non twisted.protocols.telnet
. Le premier est plus récent, mieux testé, plus riche en fonctionnalités, et a plusieurs exemples (bien que malheureusement pas beaucoup de documentation au-delà).
The main telnet example affiche les gestionnaires d'événements les plus utiles que vous pouvez définir si vous utilisez twisted.conch.telnet
. Malheureusement, cela n'explique pas vraiment ce qu'ils font, ni ne montre comment vous pourriez négocier des options. Si vous connaissez déjà le protocole telnet lui-même (principalement la partie négociation de l'option), cela devrait vous sembler logique. Si vous pensez que "telnet" est juste un moyen de passer des octets lisibles/inscriptibles entre deux ordinateurs, alors vous n'avez probablement jamais couru à travers la négociation d'option auparavant et cela n'a peut-être pas beaucoup de sens. Vous pouvez l'ignorer, ou vérifier the telnet RFC pour en savoir plus (c'est un peu dense, cependant). Pour effectuer la négociation d'options vous-même, vous pouvez au moins jeter un oeil à the API documentation pour l'objet self.transport
que vous voyez dans l'exemple ci-dessus (ce n'est pas un transport TCP normal comme vous le trouverez dans une grande partie de Twisted, mais un transport spécial dérivé de telnet qui se trouve au-dessus de TCP, il a donc quelques fonctionnalités supplémentaires).Si vous voulez juste passer des octets, vous pouvez vous concentrer sur la méthode dataReceived
et sur self.transport.write
. Le premier sera appelé quand vous recevez des octets de votre pair; ce dernier vous pouvez appeler pour envoyer des octets à votre pair.
thnx. Je pense que je vais essayer cette route. –