Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        /// <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;
                    }
                }
            }
        }
Esempio n. 3
0
 public void Consume(UsualMessage message)
 {
     Print(message.Word);
 }