コード例 #1
0
        // При принятии нового клиента
        private void ChatClientInteraction()
        {
            // Считывание присланной информации от клиента
            string help_var;

            try
            {
                help_var = srReceiver.ReadLine();
            }
            catch
            {
                CloseConnection();
                return;
            }
            var userInfo = ExtractUserInfo(help_var);
            var authRes  = ValidateUserInfo(userInfo);

            string resultMessage = authRes.code.ToString() + "|" + authRes.message;

            swSender.WriteLine(resultMessage);
            swSender.Flush();
            if (authRes.code != 0)
            {
                CloseConnection();
                return;
            }
            currUserInfo = userInfo;
            ChatServer.AddUser(tcpClient, currUserInfo.username);
            try
            {
                string userMessage;
                // Пока соединение активно
                while (true)
                {
                    userMessage = srReceiver.ReadLine();
                    if (userMessage == null)
                    {
                        break;
                    }
                    if (userMessage == "")
                    {
                        continue;
                    }
                    // Как только мы получаем сообщение, передаем его серверу
                    ChatServer.SendUserMessage(currUserInfo.username, userMessage);
                }
            }
            finally
            {
                // Если возникла какая-то ошибка при передаче сообщения, удаляем пользователя
                ChatServer.RemoveUser(tcpClient);
            }
        }