Dlaczego zmiana wartości SO_RCVBUF nie działa?

Tworzę program, który tworzy gniazdo RAW w celu odczytu całego ruchu. Między wywołaniem socket () i recvfrom () (ostatni jest w pętli, aby wydostać wszystkie pakiety z bufora). Czekam 5s.

Po uruchomieniu programu wysyłam około 200 pakietów z poleceniem hping3 w „szybszym trybie” (aby szybko wypełnić bufor) do mojego programu. Po upłynięciu 5 sekund mój program wyodrębnia około 150 pakietów z bufora.

Staram się zmienić rozmiar bufora odbioru, aby uzyskać lepszy wynik:

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

Jednak niezależnie od wartości «a», 1 lub 10000000, wydaje się, że nic się nie zmienia, nadal otrzymuję ~ 150 pakietów z bufora.

Jaki jest problem?

Edytuj: Wartość «a» jest weryfikowana za pomocągetsockopt połączenie.

questionAnswers(2)

yourAnswerToTheQuestion