У меня есть скрипт Python, который читает файл ASCII (в основном строки NMEA), а затем транслирует их по UDP, используя базовую библиотеку сокетов.
Каждую секунду «параграф» строк NMEA отправляется с заголовком. Сервер ожидает, что каждый абзац начинается с пустой строки (в частности, a \ r \ n, то есть 0d 0a). Я строю свою строку соответствующим образом ('\ r \ n' + параграф). Если посмотреть на строковое значение в отладчике и преобразовать строку в шестнадцатеричное, то перед ней правильно добавляется 0d0a.
Однако, когда я проверяю шестнадцатеричный дамп в Wireshark, кажется, что 0d удаляется, предположительно библиотекой сокетов, поэтому конечная датаграмма просто имеет 0a. Что должно быть хорошо, конечно, за исключением того, что сервер жестко запрограммирован на ожидание 0d0a.
Итак, есть ли способ заставить библиотеку сокетов сохранить шестнадцатеричный символ 0d? То же самое происходит, когда я запускаю клиент под Windows и Linux.