すべてのトラフィックを読み取るためにRAWソケットを作成するプログラムを作成しています。socket()とrecvfrom()の呼び出しの間(最後の呼び出しは、バッファーからすべてのパケットを取り出すためのループ内にあります)、5秒待ちます。
プログラムを実行すると、hping3コマンドを使用して«高速モード»(バッファを高速で埋めるため)で約200パケットをプログラムに送信します。5秒が経過するとすぐに、私のプログラムはバッファから約150パケットを抽出します。
より良い結果を得るために、受信バッファのサイズを変更しようとしています。
int a = 65535;
if ( (setsockopt(sockfd, 0, SO_RCVBUF, &a ,sizeof(int)) ) < 0 )
{
fprintf(stderr, "Error setting sock opts..\n");
}
ただし、«a»、1、または10000000の値が何であれ、何も変わらないように見えます。それでも、バッファから最大150パケットを取得します。
どうしたの?
編集:«a»の値はgetsockopt
呼び出しで確認されます。