/// <summary> /// Отправить сообщение на сервер /// </summary> /// <param name="nickname">Никнейм отправителя</param> /// <param name="messageText">Текст сообщения</param> void sendMessageToServer(string nickname, string messageText) { IFormatter formatter = new BinaryFormatter(); NetworkStream stream = currentClient.GetStream(); UsualMessage msg = new UsualMessage(messageText, nickname); // Отправить запрос formatter.Serialize(stream, Requests.NewMessage); // Отправить сообщение formatter.Serialize(stream, msg); tbMessage.Clear(); }
/// <summary> /// Обработка запросов /// </summary> /// <param name="clientId"></param> static void requestsProcessing(int clientId) { IFormatter formatter = new BinaryFormatter(); // Поток клиента NetworkStream currentClientStream = clients[clientId].MyTcpClient.GetStream(); while (true) { // Получить запрос object request = formatter.Deserialize(currentClientStream); switch ((int)request) { // Клиент прислал сообщение для других пользователей case (int)Requests.NewMessage: // Принять сообщение UsualMessage message = acceptClientMessage(clientId); string msgToLog = message.Sender + ": " + message.Message; LoggerEvs.writeLog(msgToLog); // Разослать сообщение всем клиентам sendMessageToClients(msgToLog); break; // Клиент прислал запрос на закрытие соединения case (int)Requests.CloseConnection: lock (locker) { // Закрыть соединение с клиентом clients[clientId].MyTcpClient.Close(); // Удалить клиента из коллекции clients.Remove(clientId); // Оповестить клиентов об отключение данного string closeConnectionMessage = "Client " + clientId + " has just been disconnected."; sendMessageToClients(closeConnectionMessage); LoggerEvs.writeLog(closeConnectionMessage); // Завершать выполнение потока return; } } } }
public void Consume(UsualMessage message) { Print(message.Word); }