1

シングルスレッドサーバーの場合、以下のコードがあります。リッスンしていない (ビジー処理中) パケットを受信し (そしてその処理を開始)、別のパケットが到着するとどうなるか疑問に思っています。OS はパケットをバッファリングし、ソケットが再びリッスンするまで待ちますか、それともパケットが破棄されますか?

            While(true){
                UDPsocket.receive(packetBuff);
                //Do stuff
            }

注: アプリケーションは Linux (Ubuntu 12.04) で実行されています。

4

2 に答える 2

2

オペレーティング システムには、プログラムがビジー状態のときにデータを格納できる受信バッファーがあります。オプションを使用getsockopt()して、受信バッファーのサイズを確認/変更したり、送信バッファーのサイズを変更したりできます。通常、システム全体のデフォルトと、これに設定できるシステム全体の最大サイズがあります。SO_RCVBUFSO_SNDBUF

デフォルトとは何か、またそれを確認する方法は、使用しているオペレーティング システムによって異なります。デフォルトは通常、32K から 256K の間のどこかで、バッファされます。

于 2012-11-27T04:46:17.733 に答える
1

パケットはキューに入れられ、現在のパケットを受信した後に取得されます。

于 2012-11-27T04:46:37.263 に答える