LINUX.ORG.RU

Обмен через udp протокол в Линукс

 


0

2

Скажем есть структура запроса из 18 long. Нужно передать ее на сервер по udp. В доке написано, что порядок байт в структуре должен быть bigendian. На x86 в Линукс в памяти структура litleendian? Это правильно или нет? Еще есть т.н. сетевой порядок байт, который биг-ендиан. Вопрос мне нужно самому заботиться о преобразовании порядка байт, или Линукс перед передачей в сеть сделает это автоматом?

А что будет на стороне сервера? Какой порядок байт увидит программа?


Вопрос мне нужно самому заботиться о преобразовании порядка байт

да нужно

или Линукс перед передачей в сеть сделает это автоматом?

нет не сделает

Harald ★★★★★
()

Какой порядок байт увидит программа?

Кто сказал что принимающая программа не развернет байты еще каким-то образом? Чувак, эти порядки байт вечная попаболь, не спасет дока, но к счастью отлаживается всё это очень быстро

I-Love-Microsoft ★★★★★
()

Линукс ничего не знает о всяких протоколах прикладного уровня, порядок байт в телах дейтаграмм определяется и котролируется разработчиком протокола и его реализаций. POSIX определяет набор стандартных функций htonl/ntohl и проч. для конвертации из сетевого порядка в порядок хостовой машины.

Об этом написано в любом нормальном руководстве по сетевому программированию, в том же Стивенсе, переведённом на русский.

seiken ★★★★★
()
Ответ на: комментарий от Miha

Присоединяюсь ко всем ранее высказавшимся.

Единственное только, Стивенс да, Альфа и Омега. Но если въехать чисто на начальном этапе, то букварь от Beej лучше не придумать. Здесь — https://beej.us/guide/bgnet/

На ангельском. Есть ли русский перевод я без понятия.

Moisha_Liberman ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.