.NET 4.x Как узнать что удаленный клиент отключился - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. При подключение клиента создается список клиентов
NetworkStream networkStream = clientSocket.GetStream();
                    networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
                    dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
                    dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
                    if (clientsList.Contains(dataFromClient))
                    {
                        clientsList.Remove(dataFromClient);                     
                    }
                    clientsList.Add(dataFromClient, clientSocket);
можно ли испотльзуя данный список узнать что клиент отключился(отключение аварийное т.е при сбои программы... или закрытии процесса)

Решение задачи: «.NET 4.x Как узнать что удаленный клиент отключился»

textual
Листинг программы
    static void Main(string[] args)
        {           
            TcpListener serverSocket = new TcpListener(8001);
            TcpClient clientSocket = default(TcpClient);
            int counter;
            serverSocket.Start();
            Console.WriteLine("Ожидаем подключения ....");
            counter = 0;
            string dataFromClient = null;
 
            while ((true))
            {
                try
                {
                    counter += 1;
                    clientSocket = serverSocket.AcceptTcpClient();
 
                    byte[] bytesFrom = new byte[10025];
                    dataFromClient = null;
 
                    NetworkStream networkStream = clientSocket.GetStream();
                    networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
                    dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
                    dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
                    if (clientsList.Contains(dataFromClient))
                    {
                        clientsList.Remove(dataFromClient);
                        ListHost.Remove(dataFromClient);
                    }
                    clientsList.Add(dataFromClient, clientSocket);    
                    ListHost.Add(dataFromClient);
                    if (dataFromClient == "exit")
                    {
                        clientSocket.Close();
                    }
                    broadcast(dataFromClient, dataFromClient, false);
 
                    Console.WriteLine(dataFromClient);
                    handleClinet client = new handleClinet();
                   
                    client.startClient(clientSocket, dataFromClient, clientsList);
                    //System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(SaveList), null, 0, 10000);
                    //ListHost.Clear();
                }
                catch (Exception ex)
                {                   
                    clientsList.Remove(dataFromClient);
                    ListHost.Remove(dataFromClient);
                    clientSocket.Close();
                    serverSocket.Stop();
                    Console.WriteLine("exit");              
                }
            }           
            
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы