예제 #1
0
        public void Process()
        {
            try
            {
                Stream    = _client.GetStream();
                _userName = GetMessage();

                var message = $"{_userName} enter the chat";
                _server.BroadcastMessage(message, Id);
                Console.WriteLine(message);
                while (true)
                {
                    var mes = GetMessage();
                    if (mes == "END")
                    {
                        RecieveAndUpdate($"{_userName}: leave the chat");
                        break;
                    }

                    RecieveAndUpdate($"{_userName}:{mes}");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                _server.RemoveConnection(Id);
                Close();
            }
        }
예제 #2
0
        public void Process()
        {
            try
            {
                stream   = client.GetStream();
                username = $"User{rnd.Next(500)}";
                Console.WriteLine(username + "connected :)");
                while (true)
                {
                    string msg    = GetMessage();
                    string output = new string(msg.Where(c => char.IsLetter(c) || char.IsDigit(c) || char.IsSymbol(c) || char.IsSeparator(c) || char.IsPunctuation(c)).ToArray());
                    switch (output)
                    {
                    case "photo":
                    {
                        FileGetterAndSender("image", username, output);
                        break;
                    }

                    case "attachment":
                    {
                        FileGetterAndSender("file", username, output);
                        break;
                    }

                    case "audiofile":
                    {
                        FileGetterAndSender("audio", username, output);
                        break;
                    }

                    case "videofile":
                    {
                        FileGetterAndSender("video", username, output);
                        break;
                    }

                    case "expectedexit":
                    {
                        server.RemoveConnection(Id);
                        Close();
                        break;
                    }

                    default:
                    {
                        servermsg = String.Format("{0}: {1}", username, output);
                        Console.WriteLine(servermsg);
                        server.BroadcastMessage(msg, Id);
                        break;
                    }
                    }
                }
            }
            catch (Exception ex)
            {
                servermsg = String.Format("{0}: leave chat", username);
                Console.WriteLine(servermsg);
            }
        }
예제 #3
0
파일: Client.cs 프로젝트: GrishinM/TcpChat
        public void MainProcess()
        {
            try
            {
                while (true)
                {
                    try
                    {
                        var request = JsonSerializer.Deserialize <Request>(GetRequest());
                        var data    = request.Data;
                        switch (request.Type)
                        {
                        case RequestType.Authorization:
                            var authorization = JsonSerializer.Deserialize <Authorization>(data);
                            server.Authorize(authorization, this);
                            break;

                        case RequestType.Registration:
                            var registration = JsonSerializer.Deserialize <Registration>(data);
                            server.Register(registration, this);
                            break;

                        default:
                            server.BroadcastMessage(data, ClientInfo);
                            break;
                        }
                    }
                    catch
                    {
                        // SendMessage($"{userName} покинул чат");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                server.RemoveConnection(ClientInfo.Login);
                Close();
            }
        }