public void Process() { try { Stream = client.GetStream(); // получаем имя пользователя string message = GetMessage(); while (!server.IsValidUsername(message)) { server.SendMessageToId("invalidlogin|", Id); message = GetMessage(); } userName = message; server.SendMessageTo("successeslogin|", UserName); server.BroadcastUserlist(); message = $"msg|{userName} вошел в чат|"; // посылаем сообщение о входе в чат всем подключенным пользователям server.BroadcastMessage(message); server.PrintMessage(message); // в бесконечном цикле получаем сообщения от клиента while (true) { try { message = GetMessage(); if (message[0] == '@') { var receiver = new string(message.Skip(1).TakeWhile(x => x != ' ').ToArray()); message = new string(message.Skip(receiver.Length + 1).ToArray()); message = $"msg|[{userName}] -> [{receiver}] :{message}|"; server.PrintMessage(message); server.SendMessageTo(message, userName); if (!server.SendMessageTo(message, receiver)) { server.SendMessageTo("msg| Пользователь не найден.|", userName); } } else if (message.Contains("#userdisconnect")) { server.RemoveConnection(Id); Close(); } else { message = $"msg|{userName}: {message}|"; server.PrintMessage(message); server.BroadcastMessage(message); } } catch { message = String.Format("msg|{0}: покинул чат|", userName); server.PrintMessage(message); server.BroadcastMessage(message); break; } } } catch (Exception e) { server.PrintMessage(e.Message); } finally { // в случае выхода из цикла закрываем ресурсы server.RemoveConnection(this.Id); Close(); } }