Beispiel #1
0
 public void Process()
 {
     try
     {
         Stream = client.GetStream();
         // получаем имя пользователя
         string message = GetMessage();
         userName = message;
         Username = message;
         // посылаем сообщение о входе в чат всем подключенным пользователям
         server.BroadcastMessageForAll("$$$#!" + String.Join(",", server.Clients.Select(client => client.Username)), this.Id);
         Console.WriteLine(message);
         // в бесконечном цикле получаем сообщения от клиента
         while (true)
         {
             try
             {
                 message = GetMessage();
                 message = String.Format("{0}: {1}", userName, message);
                 Console.WriteLine(message);
                 server.BroadcastMessage(message, this.Id);
             }
             catch
             {
                 server.Clients.Remove(this);
                 server.BroadcastMessageForAll("$$$#!" + String.Join(",", server.Clients.Select(client => client.Username)), this.Id);
                 Console.WriteLine(message + " покинул чат");
                 break;
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
     finally
     {
         // в случае выхода из цикла закрываем ресурсы
         server.RemoveConnection(this.Id);
         Close();
     }
 }