예제 #1
0
파일: ClientObj.cs 프로젝트: oreshek/TCPIP
        public void Process()
        {
            try
            {
                Stream = client.GetStream();
                // получаем имя пользователя
                string message = GetMessage();
                userName = message;

                message = userName + " вошел в чат";
                // посылаем сообщение о входе в чат всем подключенным пользователям
                server.BroadcastMessage(message, this.Id);
                Console.WriteLine(message);
                // в бесконечном цикле получаем сообщения от клиента
                while (true)
                {
                    try
                    {
                        message = GetMessage();
                        message = String.Format("{0}: {1}", userName, message);
                        Console.WriteLine(message);
                        server.BroadcastMessage(message, this.Id);
                    }
                    catch
                    {
                        message = String.Format("{0}: покинул чат", userName);
                        Console.WriteLine(message);
                        server.BroadcastMessage(message, this.Id);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                // в случае выхода из цикла закрываем ресурсы
                server.RemoveConnection(this.Id);
                Close();
            }
        }
예제 #2
0
            public void Process()
            {
                try
                {
                    Stream = client.GetStream();

                    while (true)
                    {
                        try
                        {
                            if (GetClientNumber(Id) <= 3)
                            {
                                string message = GetMessage();
                                server.AddMessage(Id, message);
                                Thread.Sleep(6000);
                                if (server.DupletCheck(message) == false)
                                {
                                    if (server.RestartCheck(Id, message))
                                    {
                                        message = GetMessage();
                                        Console.WriteLine($"Поток номер {GetClientNumber(Id)}, " + DateTime.Now.ToShortTimeString() + ": " + message.ToString());
                                        string builder = znach[rnd.Next(0, 4)] + message.ToString();
                                        SendMessage(builder);
                                        server.RemoveMessage(Id, message);
                                    }
                                    else
                                    {
                                        message = GetMessage();
                                        Console.WriteLine($"Поток номер {GetClientNumber(Id)}, " + DateTime.Now.ToShortTimeString() + ": " + message.ToString());
                                        string builder = znach[rnd.Next(0, 4)] + message.ToString();
                                        SendMessage(builder);
                                        server.RemoveMessage(Id, message);
                                        server.RemoveDuplets(message);
                                    }
                                }
                                else
                                {
                                    string builder = "Повторка, но сча все буит";
                                    SendMessage(builder);
                                    server.RemoveMessage(Id, message);
                                    server.AddDuplet(Id, message);
                                }
                            }

                            else
                            {
                                string message = GetMessage();
                                string builder = "Превышен лимит потоков, попробуйте позже :с";
                                SendMessage(builder);
                            }
                        }
                        catch
                        {
                            string message = String.Format($"Поток номер {GetClientNumber(Id)} офнул");
                            Console.WriteLine(message);
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                finally
                {
                    server.RemoveConnection(this.Id);
                    Close();
                }
            }