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.