0

ユーザーがリッスンソケットを動的に追加できるシングルスレッド選択サーバーを作成しています。問題は、誰かがリッスン ソケットを追加したい場合、他のソケットのいずれかで何かが発生するまで、サーバーがその新しいソケットを選択しないことです。

私が考えた 1 つの回避策は、サーバーに新しいリッスン ソケットをリストに追加させるために、新しいリッスン ソケットが追加されたときに通知できる偽のソケットをリストに追加することでした。この解決策は私には少し「ハッキー」に思えます。他の誰かにアイデアがあるかどうか知りたいと思いました。

4

3 に答える 3

0

はい。ただし、別のリッスン ソケットを追加するには、まずサーバーに接続してから、別のソケットを追加するように指示する必要があると思います。

また、ソケット呼び出しにタイムアウト値を設定することもできます。このようにして、サーバーがリクエストへの応答でビジーでない場合、タイムアウト時に古いファイルの削除などの優先度の低いアクティビティを実行できます。

于 2013-07-08T16:18:27.110 に答える
0

偽のソケットについてのあなたの考えは悪くありません。さまざまな種類のコマンドやリクエストをサーバーに送信するために使用できるため、ソケットを制御するように名前を変更します。また、タイムアウトのポーリングよりもリアルタイムになりますselect

制御ソケットのタイプも、他のソケットとは異なる場合があります。たとえば、ローカル サーバー プログラムに制御メッセージを送信するには、TCP ソケットを使用するよりも、UDP または UNIX ドメイン ソケットを使用する方が簡単です。

于 2013-07-08T18:41:23.007 に答える