私は現在、ソケットで接続を開き、クライアントをリッスンしているac#プログラムに取り組んでいます。
TcpListenerに現在接続されているクライアントがあるかどうかを確認するにはどうすればよいですか。これを実行したいので、誰かがコンソールアプリケーションを閉じると、接続されているものを終了するのではなく、接続されているすべてのクライアントが終了するのを待ってからコンソールアプリを終了します。
以下はコードです:
TcpClient client = listener.AcceptTcpClient();
if (client.Connected)
{
library.logging(classDetails + MethodInfo.GetCurrentMethod().Name,
string.Format("Client Connected: {0}",((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()));
NetworkStream stream = client.GetStream();
byte[] data = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(data, 0, Convert.ToInt32(client.ReceiveBufferSize));
string request = Encoding.ASCII.GetString(data, 0, bytesRead);
byte[] msg = System.Text.Encoding.ASCII.GetBytes("200 OK");
ProcessXML process = new ProcessXML(library, appSettings);
// Send back a response.
stream.Write(msg, 0, msg.Length);
process.processXML(request, ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString());
client.Close();
接続されたクライアントの数を取得するメソッドがTcpListener内にありますか、それともリスト配列などにクライアントを追加し、クライアントが閉じたときにそれを削除することによって、これを自分で管理する必要がありますか。