ip_len установлен на очень большие значения - PullRequest
0 голосов
/ 22 августа 2009

У меня есть программа, которая устанавливает сетевой интерфейс в случайный режим, создает сокет, который принимает все входящие пакеты, а затем входит в цикл для чтения пакета в буфер, устанавливает указатель на местоположение заголовка IP и затем выведите значение его поля ip_len. Проблема в том, что напечатанные значения невероятно высоки. Read () возвращает что-то вроде 84, и программа напечатает 21504. Я проверил размеры пакетов в Wireshark, и общий размер каждого пакета не очень далек от возвращаемого значения read (). Как я могу заставить ip_len давать мне вменяемые данные?

1 Ответ

2 голосов
/ 22 августа 2009

Звучит как проблема порядка байтов. 21504 - это 0x5400, байт-обмен которого равен 0x0054 = 84. Убедитесь, что вы используете ntohs (ip_len) для чтения значения.

...