Почему изменение значения 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
вызов.