Конференция "Сети" » telnet. Окончание обработки команды
 
  • Виталий (09.11.13 17:57) [0]
    Всем доброго. Играюсь с сокетами используя телнет. При подключении сервер меня принимает, отправляет сообщение приветствия и... Сокет закрывается, телнет-консоль теряет связь.
    Как действуют такие серверы как FTP, позволяя создавать диалог без отключения? После того как консоль телнета подключается, получает приветствие, как сервер должен поступать дальше для организации диалога?
  • RWolf © (09.11.13 18:04) [1]
    ждать команд, отправлять результаты.
  • Виталий (09.11.13 18:21) [2]
    Как сказать консоли Телнета что сервер готов к диалогу?
  • RWolf © (09.11.13 18:49) [3]
    выслать строку приглашения.
    между сервером и терминалом нет никакого протокола поверх TCP; всё, что посылается сервером, видно пользователю в виде текста (возможно, со специфичной для терминала разметкой).
  • Виталий (09.11.13 18:53) [4]
    Я кажется нашел свою ошибку, спасибо.
    Еще вопрос: Телнет консоль посылает на сервер каждую введенную букву, не пойму почему так задуманно? Т.е. это же расточительно получается по букве отправлять? Выгоднее посылать всю строку после нажатия энтера же?
  • RWolf © (09.11.13 19:02) [5]
    текст на экране терминала — это то, что пришло от сервера.
    нажали клавишу — код ушёл на сервер, тот прислал его обратно, на экране появился символ.
  • Виталий (09.11.13 19:06) [6]
    Ну я понял, но почему именно по нажатии клавиши идет мгновенно передача этой клавиши? Я думал всегда что телнет посылает только после нажатия клавиши Энтер... Т.е. мне не понятен сам смысл такой поклавшной передачи.
  • RWolf © (09.11.13 19:08) [7]
    потому что на экране видно только то, что пришло от сервера.
    если накапливать строку до отправки, печатать придётся вслепую.
  • Виталий (09.11.13 19:22) [8]
    Ну вот я и спрашиваю, почему именно так задуманно.
    Ладно, это уже лирика, я нашел ответы на свои вопросы.
  • Inovet © (09.11.13 20:07) [9]
    > [8] Виталий   (09.11.13 19:22)
    > почему именно так

    Потому, что это терминал. Были, знаешь ли, другие времена. Вот тут фотка, как раз и поймёшь для чего так, а как ещё-то
    http://ru.wikipedia.org/wiki/%CA%EE%EC%EF%FC%FE%F2%E5%F0%ED%FB%E9_%F2%E5%F0%EC%E8%ED%E0%EB
  • Виталий (10.11.13 14:32) [10]
    Ну понятно. Совместимость с прошлым веком.
  • Inovet © (10.11.13 15:48) [11]
    > [10] Виталий   (10.11.13 14:32)

    Ты не понял. Вот ты нажал "А", с той стороны что-то обработалось, посчитало расположение звёзд, и выдало тебе "Б" или "В". Первое означает - "Всё ништяк, работаем дальше", второе - "А ну-ка повтори ввод пароля". Как передавая строку это сделать?
  • Виталий (10.11.13 19:51) [12]

    > Как передавая строку это сделать?

    Точно так же как один символ - накапливать строку в памяти, а потом по нажатию определенной клавиши выдать в сеть.
  • Inovet © (10.11.13 21:02) [13]
    > [12] Виталий   (10.11.13 19:51)

    Вводим строку

    А роза упала на лапу Азора.


    отправляем. Получаем

    В
    Пароль неверный, до самоуничтожения Всего осталось 2 попытки.
    Пароль неверный, до самоуничтожения Всего осталась 1 попытка.
    Всё будет иничтожено через 3 секунды.
    Приятного Вам вечера! До свидания!

  • Павиа (10.11.13 22:10) [14]
    Чего вы человека мучаите. Были разные терминалы. Кстати наиболее распространённый протокол как раз таки с отправкой строки.

    По поводу расточительства. Прежде временна оптимизация крайне вредна.
    Просто некоторые сервера могут принимать бесконечный поток символов. А для передачи строки нужен буфер, а буфер ограничен.

    Собственно раньше транзисторы были дорогими, а провода дешевыми. Поэтому гораздо проще было запомнить 1 байт и его передать чем запомнить всю строку.
    Кстати отсюда в старых языках и ограничения на длину переменной или команды в 3-8 символов. Это сейчас 32 или 64 и практически везде хватает и некто об этом и не задумывается.
 
Конференция "Сети" » telnet. Окончание обработки команды
Есть новые Нет новых   [118456   +52][b:0][p:0.001]