2011-10-18 4 views
0
while (!Server.isShuttingDown) 
{ 
    Server.client = Server.listener.AcceptTcpClient(); 
    Connection con = new Connection(Server.client); 
} 

クライアントが接続されていることをサーバーが認識できるようにするにはどうすればよいですか。私はクライアントが接続するときに何が起こるのかについてクラスを作ったが、それはクライアントがいつ接続するのかを知るためには役に立たない。クライアントがこのコードにいつ接続するかはどのように分かりますか?

答えて

1

よく、AcceptTpcClientメソッドは、クライアントが接続するまでブロックされます。したがって、Connectionコンストラクタが新しいスレッドを開始すると仮定すると、それとConnectionコンストラクタ呼び出し...またはその後ろの行を挿入します。 Server.client - - 各反復で、良いアイデアのような音はありませんあなたは、単一の変数変数の値を上書きているよう

マインドあなたは、それが見えます。私はあなたが持つほうが良いと思います疑う:

while (!Server.IsShuttingDown) { 
    var client = Server.Listener.AcceptTcpClient(); 
    // Act on "client has connected" here 
    Connection con = new Connection(client); 
} 

Serverオブジェクト自体はこのすべてをやって...または少なくともAcceptTcpClient方法自体を暴露されていない理由(それははっきりしていない現在、これがどのように見えます。 Law of Demeterの違反のビット)

+0

私はそれが自分のスレッド上で実行したいので、私は別のクラスを作った。 –

+0

@MarcusS:これらの2つの懸案事項は直交しています。リスナーを公開する必要がないように、別のクラスに 'AcceptTcpClient'メソッドを提供することができます。 –

関連する問題