-
Всем доброго. Играюсь с сокетами используя телнет. При подключении сервер меня принимает, отправляет сообщение приветствия и... Сокет закрывается, телнет-консоль теряет связь. Как действуют такие серверы как FTP, позволяя создавать диалог без отключения? После того как консоль телнета подключается, получает приветствие, как сервер должен поступать дальше для организации диалога?
-
ждать команд, отправлять результаты.
-
Как сказать консоли Телнета что сервер готов к диалогу?
-
выслать строку приглашения. между сервером и терминалом нет никакого протокола поверх TCP; всё, что посылается сервером, видно пользователю в виде текста (возможно, со специфичной для терминала разметкой).
-
Я кажется нашел свою ошибку, спасибо. Еще вопрос: Телнет консоль посылает на сервер каждую введенную букву, не пойму почему так задуманно? Т.е. это же расточительно получается по букве отправлять? Выгоднее посылать всю строку после нажатия энтера же?
-
текст на экране терминала — это то, что пришло от сервера. нажали клавишу — код ушёл на сервер, тот прислал его обратно, на экране появился символ.
-
Ну я понял, но почему именно по нажатии клавиши идет мгновенно передача этой клавиши? Я думал всегда что телнет посылает только после нажатия клавиши Энтер... Т.е. мне не понятен сам смысл такой поклавшной передачи.
-
потому что на экране видно только то, что пришло от сервера. если накапливать строку до отправки, печатать придётся вслепую.
-
Ну вот я и спрашиваю, почему именно так задуманно. Ладно, это уже лирика, я нашел ответы на свои вопросы.
-
-
Ну понятно. Совместимость с прошлым веком.
-
> [10] Виталий (10.11.13 14:32)
Ты не понял. Вот ты нажал "А", с той стороны что-то обработалось, посчитало расположение звёзд, и выдало тебе "Б" или "В". Первое означает - "Всё ништяк, работаем дальше", второе - "А ну-ка повтори ввод пароля". Как передавая строку это сделать?
-
> Как передавая строку это сделать?
Точно так же как один символ - накапливать строку в памяти, а потом по нажатию определенной клавиши выдать в сеть.
-
> [12] Виталий (10.11.13 19:51)
Вводим строку
А роза упала на лапу Азора.
отправляем. Получаем
В
Пароль неверный, до самоуничтожения Всего осталось 2 попытки.
Пароль неверный, до самоуничтожения Всего осталась 1 попытка.
Всё будет иничтожено через 3 секунды.
Приятного Вам вечера! До свидания!
-
Чего вы человека мучаите. Были разные терминалы. Кстати наиболее распространённый протокол как раз таки с отправкой строки.
По поводу расточительства. Прежде временна оптимизация крайне вредна. Просто некоторые сервера могут принимать бесконечный поток символов. А для передачи строки нужен буфер, а буфер ограничен.
Собственно раньше транзисторы были дорогими, а провода дешевыми. Поэтому гораздо проще было запомнить 1 байт и его передать чем запомнить всю строку. Кстати отсюда в старых языках и ограничения на длину переменной или команды в 3-8 символов. Это сейчас 32 или 64 и практически везде хватает и некто об этом и не задумывается.
|