2008-11-26 2 views
3

Я ищу, чтобы запустить приложение MUD client, которое подключается к MUD, размещенному на сервере telnet. Единственное, что важно для меня, это то, что он работает безболезненно и эффективно в любой ОС. Помимо этого требования, я не продаюсь на любом языке.Telnet lib и выбор языка для кросс-клиента telnet-сервера?

Итак, я ищу свободно доступную клиентскую библиотеку telnet, на которой я могу основать мое приложение, поэтому мне не нужно слишком много разбираться в деталях протокола.

ответ

7

Я бы всегда рассматривал Twisted для такого рода вещей (Python).

Красота заключается в том, что если вы позже решите заменить ее на SSH или что-нибудь более безопасное, чем telnet, вы можете с небольшой болью.

+0

Я не могу найти хорошие примеры использования Telnet с Twisted, не так ли? – Ray

+0

Это похоже на использование любого другого «протокола» Twisted. Вам нужно будет посмотреть страницу примеров, например: http: // twistedmatrix.ком/проекты/ядро ​​/ документация/HOWTO/clients.html. Протокол, который вы будете использовать, - twisted.conch.telnet.Telnet (не EchoProtocol). –

+0

API здесь: http://twistedmatrix.com/documents/8.1.0/api/twisted.conch.telnet.html –

2

Интерфейс telnet в CPAN, если вам нравится Perl. Это довольно минимально, но он должен выполнить свою работу.

libcurl также должен иметь возможность выполнять telnet, хотя я не мог найти никаких примеров этого.

2

Для всех моих программ MUD я просто создал свои собственные подпрограммы с нуля, используя RFC.

Если вы хотите избежать некоторой моей боли, я завернул ее в довольно простой класс C#, который правильно обрабатывает Telnet. Если вы хотите просмотреть его, вы можете просмотреть его here.

Этот код был скопирован/вставлен и запущен в Windows и Linux (через Mono) на нескольких отдельных проектах и ​​работает очень хорошо.

+0

Спасибо, но я бы предпочел что-то еще ... родной. – Ray

3

Витая, извилистая, извилистая!

Чтобы использовать telnet, см. Пакет twisted.conch.telnet. У него есть spartan API docs, но реальная информация об использовании его исходит от searching on Google Code Search, например this nugget от grailmud - сервер MUD.

0

pmc (http://sourceforge.net/projects/perlmudclient/) был попыткой сделать именно это. Я потратил часть прошлой недели на это; он использует старую модифицированную версию Net :: Telnet для выполнения своей работы по подключению.

Моя проблема заключается в том, что Net :: Telnet имеет интерфейс блокировки, когда частичная линия отправляется сервером, то есть строка, не прерванная новой строкой. Он имеет две функции, которые поддерживают это (waitfor и его механизм подсказки), потому что почти все серверы telnet имеют подсказки, которые не завершены с помощью новой строки.

У MUD часто есть «подсказки», которые являются нестандартными и меняются в ходе игры; MUD I admin on имеет приглашение «Ваш выбор:» как его логин [это не только имена пользователей], и многие функции игры содержат альтернативные подсказки. Поэтому я подозреваю, что вам нужно помнить об этом, когда вы ищите кросс-платформенную библиотеку Telnet!

0

Если вам нравится C, я сердечно рекомендую libtelnet. Он будет поддерживать внутреннее состояние, которое выполняет всю последовательность анализа IAC для вас, и обрабатывает согласование опций с использованием Q method.

Смежные вопросы