C#Socket.Listen(MAX_CONNECTIONS)。
-
20-09-2019 - |
質問
私はsocket.listenといくつかの助けを必要とします。
私のmax_connectionsが1に設定されているが、別のクライアントが接続しようとする場合、クライアントが接続された後も、クライアント側では、サーバが新しい何かを報告しませんが、それが接続されていると言います。
私のアプリは、1つのサーバと1つのクライアントの間です。そして、他のクライアントは拒否されるように接続し、私が欲しいの接続がすでに存在している間に接続しようとすると。
いくつかのアイデアを助けてくださいます。
どうもありがとうございました。
解決
あなたは任意のコードが、あなたのポスト参照のSocket.Listen
のタイトルを提供していませんでした。 Socket.Listen
に与えられたパラメータは、接続の最大数ではなく、むしろそれは、着信接続の「バックログ」の大きさである。
どのようなことが意味することは、誰かが接続しようとするが、あなたのサーバがまだ接続をAccept()
edていない場合、それらのクライアントは、「バックログ」キューにあるということです。あなたが唯一の1クライアントが同時に接続するために待機することができますので、1サイズを設定しました。
このパラメータは、アプリケーションに許可される接続の合計数には影響しません。
他のヒント
あなたは、接続がすでに存在するかどうかを確認し、その時に決定するためにあなたれるtcpClientに接続されているプロパティを使用することができます。
私は新しいクライアント接続を受け入れるが、を取得するためにあなたを提案しますsemaphorすぐに包まれたサーバーにアクセスする前にアクセスした後、すぐにそれを解放。このアプローチは、あなたは、同時に包まれたサーバーを使用しているクライアントの数を制御することができます。