2012-05-31 2 views
0

현재 소켓에서 연결을 열고 클라이언트를 수신하는 C# 프로그램을 작성하고 있습니다.TcpListener에 연결된 클라이언트가 있는지 확인하십시오.

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 내 방법이 아니면이 목록을 배열처럼 뭔가에 클라이언트를 추가하여 자신을 관리 할 수있어하고 클라이언트가 닫힐 때 제거하십시오.

답변

1

내가 아는 한 TcpListener는 내부적으로 허용 된 연결을 추적하지 않습니다. 이는 필요에 따라 응용 프로그램에서 명시 적으로 수행해야합니다.

관련 문제