Предложение Грега попытаться познакомиться с Python, прежде чем пытаться взять Twisted, возможно, является разумным. Ограничение возможных источников вашей путаницы может помочь вам избежать некоторых очень неприятных случаев.
С другой стороны, я знаю многих людей, которые берут проект на основе Twisted в качестве первого опыта изучения Python и добиваются успеха. Так что это возможно. И вам придется сначала сделать что-то . Нет гарантии, что то, что вы выберете вместо Twisted, будет проще. :)
Что касается специфики telnet, вы хотите использовать twisted.conch.telnet
, а не twisted.protocols.telnet
. Первый из них более новый, лучше протестированный, более функциональный и имеет несколько примеров (хотя, к сожалению, не так уж много документации).
В основном примере telnet показаны наиболее полезные обработчики событий, которые вы можете определить, если используете twisted.conch.telnet
. К сожалению, на самом деле это не объясняет, что они делают, и не дает демонстрации того, как вы могли бы вести переговоры. Если вы уже знакомы с самим протоколом telnet (в первую очередь его согласованием опций), это должно иметь смысл для вас. Если вы думаете о «telnet» как о способе передачи читаемых / записываемых байтов человеком между двумя компьютерами, то вы, вероятно, раньше не сталкивались с согласованием опций, и это может не иметь особого смысла. Вы можете либо проигнорировать его, либо проверить telnet RFC , чтобы узнать больше (хотя и немного плотно).
Для самостоятельного согласования опций вы можете, по крайней мере, взглянуть на документацию API для объекта self.transport
, который вы видите в приведенном выше связанном примере (это не обычный транспорт TCP, поскольку вы В большинстве случаев Twisted будет использоваться, но это особый транспорт, полученный из telnet, который расположен поверх TCP, поэтому у него есть несколько дополнительных функций.
Если вы просто хотите передать байты, тогда вы можете сосредоточиться на методе dataReceived
и self.transport.write
. Первый будет вызван, когда вы получите байты от вашего пира; последний вы можете позвонить, чтобы отправить байты вашему пиру.