私のクエリは、setsocketopt() API の「SO_RCVBUF」オプションに関連しています。setsockopt() で SO_RCVBUF に指定された新しい値はいつ有効になりますか?
TCP/IP のフロー制御をテストしており、以下が私の環境です。クライアント プログラムは読み込みが遅く、ソケットは 1 つです。フロー制御をテストするために、接続を確立した後、データを受信する前に、SO_RCVBUF の値を 5000 バイトに減らしています。私の期待は、5000バイト以上を送信した後のサーバープログラムは、クライアントが読み取るのを待つ必要があるということです。しかし、サーバー プログラムは最大 60000 バイトまでデータを送信します。その後、サーバープログラムはクライアントが読み取るのを待ちます。クライアントが最大 55000 バイトを読み取ると、受信バッファの新しい値 (5000 バイト) が使用されていることがわかります。
それは期待されていますか?setsocketopt() の効果はすぐに現れるはずです。受信バッファの初期値は、setsocketopt() の後で何の効果も持たないはずです。
よろしく、 プラシャント