public static void send_message(member_chat user)
 {
     List<Socket> list;
     //пишем другим
     if (Console.ReadKey().Key == ConsoleKey.Enter)
     {
         Console.Write(user.name + ": ");
         string msg = Console.ReadLine();
         list = new List<Socket>(user.clients);
         //только те что на запись, напишем себе и им
         if (list.Count > 0) Socket.Select(null, list, null, 200);
         foreach (Socket socket in list)
         {
             try
             {
                 StreamWriter msgs = new StreamWriter(new NetworkStream(socket));
                 msgs.WriteLine(user.name + ": " + msg);
                 msgs.Flush();
             }
             catch (Exception)
             {
                 Console.WriteLine("Один из пользователей покинул чат");
                 user.clients.Remove(socket);
             }
         }
     }
 }
 public static void receive_message(member_chat user)
 {
     List<Socket> list = new List<Socket>(user.clients);
     if (list.Count > 0) Socket.Select(list, null, null, 200);//проверяем те, с которых ещё можно читать
     foreach (Socket socket in list)
     {
         string msg = new StreamReader(new NetworkStream(socket)).ReadLine();
         List<Socket> list2 = new List<Socket>(user.clients);//напишет всем своим клиентам
         if (list2.Count > 0) Socket.Select(null, list2, null, 200);//только те, что на запись
         foreach (Socket socket1 in list2)
         {
             try
             {
                 if (socket1 != socket)
                 {
                     StreamWriter msgs = new StreamWriter(new NetworkStream(socket1));
                     msgs.WriteLine(msg);
                     msgs.Flush();
                 }
             }
             catch (Exception)
             {
                 Console.WriteLine("Один из пользователей покинул чат");
                 user.clients.Remove(socket1);
             }
         }
         //напишем и себе
         Console.WriteLine(msg);
     }
 }
Esempio n. 3
0
        public static void send_message(member_chat user)
        {
            List <Socket> list;

            //пишем другим
            if (Console.ReadKey().Key == ConsoleKey.Enter)
            {
                Console.Write(user.name + ": ");
                string msg = Console.ReadLine();
                list = new List <Socket>(user.clients);
                //только те что на запись, напишем себе и им
                if (list.Count > 0)
                {
                    Socket.Select(null, list, null, 200);
                }
                foreach (Socket socket in list)
                {
                    try
                    {
                        StreamWriter msgs = new StreamWriter(new NetworkStream(socket));
                        msgs.WriteLine(user.name + ": " + msg);
                        msgs.Flush();
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Один из пользователей покинул чат");
                        user.clients.Remove(socket);
                    }
                }
            }
        }
 public static void user_connect(member_chat user)
 {
     if (user.listener.Poll(100, SelectMode.SelectRead))//можно ли читать с сокета
     {
         Socket socket = user.listener.Accept();
         user.clients.Add(socket);
     }
 }
 public static void user_connect(member_chat user)
 {
     if (user.listener.Poll(100, SelectMode.SelectRead))//можно ли читать с сокета
     {
         Socket socket = user.listener.Accept();
         user.clients.Add(socket);
     }
 }
Esempio n. 6
0
 public void Exchangeofinformation(member_chat user)
 {
     while (true)
     {
         ChatUserConnect.user_connect(user);
         ChatReceiveMessage.receive_message(user);
         ChatSendMessage.send_message(user);
         ChatReceiveMessage.receive_message(user);
     }//выход производится непосредственно закрытием чата, сокеты закрываются также
 }
Esempio n. 7
0
 public void Exchangeofinformation(member_chat user)
 {
     while (true)
     {
         ChatUserConnect.user_connect(user);
         ChatReceiveMessage.receive_message(user);
         ChatSendMessage.send_message(user);
         ChatReceiveMessage.receive_message(user);
     }//выход производится непосредственно закрытием чата, сокеты закрываются также
 }
        public static void receive_message(member_chat user)
        {
            List <Socket> list = new List <Socket>(user.clients);

            if (list.Count > 0)
            {
                Socket.Select(list, null, null, 200);                //проверяем те, с которых ещё можно читать
            }
            foreach (Socket socket in list)
            {
                string        msg   = new StreamReader(new NetworkStream(socket)).ReadLine();
                List <Socket> list2 = new List <Socket>(user.clients);//напишет всем своим клиентам
                if (list2.Count > 0)
                {
                    Socket.Select(null, list2, null, 200);                 //только те, что на запись
                }
                foreach (Socket socket1 in list2)
                {
                    try
                    {
                        if (socket1 != socket)
                        {
                            StreamWriter msgs = new StreamWriter(new NetworkStream(socket1));
                            msgs.WriteLine(msg);
                            msgs.Flush();
                        }
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Один из пользователей покинул чат");
                        user.clients.Remove(socket1);
                    }
                }
                //напишем и себе
                Console.WriteLine(msg);
            }
        }