Почему изменение значения SO_RCVBUF не работает?

Я делаю программу, которая создает сокет RAW для чтения всего трафика. Между вызовом socket () и recvfrom () (последний находится в цикле, чтобы получить все пакеты из буфера), я жду 5 с.

Когда я запускаю программу, я отправляю около 200 пакетов с командой hping3 в & # xAB; более быстрый режим & # xBB; (быстро заполнить буфер) моей программе. По истечении 5 секунд моя программа извлекает из буфера около 150 пакетов.

Я пытаюсь изменить размер буфера приема, чтобы получить лучший результат:

<code>int a = 65535;
if ( (setsockopt(sockfd, 0, SO_RCVBUF, &a ,sizeof(int)) ) < 0 )
{
    fprintf(stderr, "Error setting sock opts..\n");
}
</code>

Однако каково бы ни было значение & # xAB; a & # xBB ;, 1 или 10000000, кажется, ничего не меняется, я все еще получаю ~ 150 пакетов из буфера.

В чем проблема?

Изменить: значение & # xAB; & # xBB; подтверждаетсяgetsockopt вызов.

Ответы на вопрос(2)

Ваш ответ на вопрос