サーバはいくつかのソケット(10-20)からの着信データを聞く必要があります。いくつかの初期化の後、それらのソケットは作成され、変更されません(つまり、新しいソケットは受け入れられず、サーバの存続期間中に閉じることはできません)。複数のソケットを聞く:選択とマルチスレッドの選択
1つのオプションはすべてのソケットでselect()
です。次に、ソケットごとに受信データを処理します(つまり、適切な処理機能への経路)。
もう1つの方法は、ソケットごとに1つのスレッドを開き、各スレッドにrecv()
を入力させて処理させることです。
(最初のオプションはタイムアウトを設定する利点がありますが、この場合は問題ありません。すべてのソケットはかなりアクティブなので です)。
次のように仮定します:Windowsサーバーは、20MB(20スレッド)が問題にならないような十分なメモリを備えています。
私は10-20のソケットでは、各ソケットにスレッドを割り当てることは問題ではなく、 'recv()'を使って処理するのは、通常は少し早くプログラムすることです(afaik)。 http://www.gamedev.net/topic/304030-async-sockets-or-select-with-threads/ –