0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 26
|
||||||
1 | ||||||
Проблемы в работе эхо-сервера07.04.2023, 16:09. Показов 1107. Ответов 1
Добрый день, форумчане! Решил освоить асинхронное программирование (если интересно, иду по книге Asyncio и конкурентное программирование на Python под авторством Мэттью Фаулера), и в качестве примера работы неблокирующих сокетов дан пример кода простого эхо-сервера.
Вот его код:
1) В книге советуют использовать приложение PuTTY, чтобы запустить клиент telnet. В этой проге я совсем ничего не понимаю В графе host name (or IP address) я уже что не писал. Варианты 127.0.0.1 и 127.0.0.1:8000. Оба варианта кончаются одним. Терминал открывается и почти сразу возникает ошибка Network error: Connection refused. После я попробовал изменить порт в строке server_address = ('127.0.0.1', 8000) на 23, т.е. server_address = ('127.0.0.1', 23) и все вроде заработало, клиент получает дублированное сообщение (хоть и заканчивается с ошибкой, не знаю, может так и надо). Но меня начало беспокоить что-то другое. В книге написано, что при написании в клиенте testing123 должен быть результат в выводе Python: Получен запрос на подключение от ('127.0.0.1', 50192)! Получены данные: b'te'! Получены данные: b'st'! Получены данные: b'in'! Получены данные: b'g1'! Получены данные: b'23'! Получены данные: b'\r\n'! Все данные: b'testing123\r\n' Но у меня при открытии клиента сначала в буфер скидываются непонятные байты, а уже после нужный результат: Получен запрос на подключение от ('127.0.0.1', 50192)! Получены данные: b'\xff\xfb'! Получены данные: b'\x1f\xff'! Получены данные: b'\xfb '! Получены данные: b'\xff\xfb'! Получены данные: b'\x18\xff'! Получены данные: b"\xfb'"! Получены данные: b'\xff\xfd'! Получены данные: b'\x01\xff'! Получены данные: b'\xfb\x03'! Получены данные: b'\xff\xfd'! Получены данные: b'\x03'! Получены данные: b'te'! Получены данные: b'st'! Получены данные: b'in'! Получены данные: b'g1'! Получены данные: b'23'! Получены данные: b'\r\n'! Все данные: b"\xff\xfb\x1f\xff\xfb \xff\xfb\x18\xff\xfb'\xff\xfd\x01\xff\xfb\x03\xff\xfd\x03testing123\r\n" Вроде бы ничего, но никак не могу понять, что это за байты. Пытался добавить код для декодировки, но выкидывает ошибку. строка: print(buffer.decode('utf-8')) Результат: Получен запрос на подключение от ('127.0.0.1', 50231)! Получены данные: b'\xff\xfb'! Получены данные: b'\x1f\xff'! Получены данные: b'\xfb '! Получены данные: b'\xff\xfb'! Получены данные: b'\x18\xff'! Получены данные: b"\xfb'"! Получены данные: b'\xff\xfd'! Получены данные: b'\x01\xff'! Получены данные: b'\xfb\x03'! Получены данные: b'\xff\xfd'! Получены данные: b'\x03'! Получены данные: b'\r\n'! Все данные: b"\xff\xfb\x1f\xff\xfb \xff\xfb\x18\xff\xfb'\xff\xfd\x01\xff\xfb\x03\xff\xfd\x03\r\n" Traceback (most recent call last): File "D:\github\studeing_asyncio\main.py", line 19, in <module> print(buffer.decode('utf-8')) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte Наконец вопрос: Что это за байты в буфере?
0
|
07.04.2023, 16:09 | |
Ответы с готовыми решениями:
1
Проблемы с написанием локального эхо-Сервера в QT на macOS Создание эхо сервера Создание эхо-сервера Проблемы со звуком. Эхо! Клиент для ЭХО сервера в линуксе |
3570 / 2717 / 348
Регистрация: 11.03.2009
Сообщений: 6,254
|
|
08.04.2023, 11:55 | 2 |
Сообщение было отмечено dj_jd как решение
Решение
Какой ошибка, "Process finished with exit code 0"? Это шатное завершение программы.
По коду обработка идет, пока не приедет новая строка (в клиенте не нажмем клавишу Enter), после чего программа завершается. Клиент договаривается с сервером о параметрах связи. https://ru.wikipedia.org/wiki/Telnet смотрите раздел "Структура команд Telnet"
1
|
08.04.2023, 11:55 | |
08.04.2023, 11:55 | |
Помогаю со студенческими работами здесь
2
VS c++ sockets (errors), Пример реализации TCP эхо-сервера Комментарии к коду эхо-клиент/эхо-сервер Ошибка "Соединение не установлено" при реализации эхо сервера Тормоза в работе HTTP сервера Зависание сервера при работе 1С Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как узнать какой процесс блокирует файл или каталог в Windows
bt_guru 23.01.2025
При работе с операционной системой Windows пользователи нередко сталкиваются с ситуацией, когда система отказывается выполнять определенные действия с файлами или каталогами, сообщая, что они. . .
|
Как в curl узнать код статуса HTTP запроса. Коды состояния HTTP
bt_guru 23.01.2025
Коды состояния HTTP играют значимую роль в обеспечении эффективного взаимодействия между клиентами и серверами. При работе с веб-сервисами важно не только отправлять запросы, но и правильно. . .
|
Как сортировать вывод команды ls в Linux
bt_guru 23.01.2025
В операционной системе Linux команда ls является одним из наиболее часто используемых инструментов для просмотра содержимого директорий. При работе с файловой системой пользователи регулярно. . .
|
Как сделать POST запрос с помощью curl
bt_guru 23.01.2025
curl - это мощный инструмент командной строки позволяет отправлять и получать данные через различные протоколы, включая HTTP, HTTPS, FTP и множество других. Особенно полезным curl становится при. . .
|
Прокрутка в tmux с помощью мыши и клавиатуры
bt_guru 23.01.2025
Tmux представляет собой мощный терминальный мультиплексор, который позволяет пользователям создавать и управлять несколькими терминальными сессиями внутри одного окна. Одной из важнейших функций tmux. . .
|
Как проверить, содержит ли массив значение в JavaScript. Поиск в массиве
bytestream 23.01.2025
Эффективный поиск значений в массивах становится критически важным навыком для разработчиков, использующих JavaScript. Процесс поиска элементов в массиве может показаться простым на первый взгляд,. . .
|
Как удалить тег Git в удалённом репозитории (remote)
bytestream 23.01.2025
Одним из важнейших механизмов организации версий в Git являются теги, которые позволяют помечать определенные точки в истории проекта как значимые. Теги часто используются для маркировки релизов,. . .
|
Чем отличаются URL, URI и URN
bytestream 23.01.2025
Системы идентификации представляют собой фундаментальный механизм, позволяющий однозначно определять местоположение и характеристики различных информационных объектов в глобальной сети. Эти системы. . .
|
Как центрировать div внутри другого div с помощью CSS. Управление расположением элементов в CSS
bytestream 23.01.2025
Позиционирование элементов играет ключевую роль в создании качественных и профессиональных интерфейсов. Одной из наиболее часто встречающихся задач является центрирование элементов на веб-странице,. . .
|
Что означают различные символы в синтаксисе PHP
bytestream 23.01.2025
PHP (Hypertext Preprocessor) представляет собой один из наиболее широко используемых языков программирования для веб-разработки, который обладает богатой и интересной историей развития. Изначально. . .
|
Способы клонирования объектов в JavaScript
bytestream 23.01.2025
В современной разработке на JavaScript работа с объектами является фундаментальной частью создания любого приложения. При манипуляции объектами часто возникает необходимость создавать их копии для. . .
|
Как проверить состояние чекбокса в jQuery. Как работать с чекбоксами
bytestream 23.01.2025
При разработке интерактивных веб-форм часто возникает необходимость программно определять состояние чекбоксов с помощью jQuery. Чекбоксы являются важными элементами пользовательского интерфейса,. . .
|