Плучить список подключившихся клиентов к серверу - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Возникла следующая задача: У меня есть сервер, к которому подключается некоторое количество клиентов. Подключившихся клиентов нужно добавлять в список, который отображается непосредственно в программе и по мере их отключения/ обратного подключения удалять/добавлять в список в данный момент. Задача вроде бы не сложная, но с шарпом работаю недолго, многого не умею/не знаю ( Заранее благодарю ) Глобально объявляю вот что:
public static List<TcpClient> list_clients = new List<TcpClient>();
        public static ManualResetEvent tcpClientConnected = new ManualResetEvent(false);
        public static TcpListener listen = new TcpListener(IPAddress.Any, 7000);
По нажатии на кнопку делаю вот что:
list_clients.Clear();
            btn_load.Enabled = true;
            btn_open_path.Enabled = true;
            BeginAcceptClient(listen);
Вот сами функции:
public static void AddClient(IAsyncResult ar)
        {
            try
            {
                listen = (TcpListener)ar.AsyncState;
                TcpClient client = listen.EndAcceptTcpClient(ar);
                list_clients.Add(client);
                //StatusStrip statusStrip2 = new StatusStrip();
                //statusStrip2.Items[0].Text = "Клиент успешно добавлен";
                tcpClientConnected.Set();
                BeginAcceptClient(listen);
            }
 
            catch 
            {
                StatusStrip statusStrip2 = new StatusStrip();
                statusStrip2.Items[0].Text = "Ошибка соединения с клиентом";
            }
            
        }
               
        public static void BeginAcceptClient(TcpListener listen)
        {
            try
            {
                tcpClientConnected.Reset();                
                //StatusStrip statusStrip2 = new StatusStrip();
                //statusStrip2.Items[0].Text = "Ожидаем соединения";
                listen.Start(10);
                listen.BeginAcceptTcpClient(new AsyncCallback(AddClient), listen);
                tcpClientConnected.WaitOne();
            }
            catch
            {
                StatusStrip statusStrip2 = new StatusStrip();
                statusStrip2.Items[0].Text = "Ошибка при попытке поиска клиентов";
            }
 
        }
Отправляю файлы:
byte[] xml = File.ReadAllBytes(string.Format(tb_xml_name.Text + "\\" + "F000{0}.xml", xml_filename));
                byte[] xml_F_0 = new byte[xml.Length + 1];
                xml.CopyTo(xml_F_0, 0);
                
                try
                {
                    foreach (TcpClient c in list_clients)
                        c.Client.Send(xml_F_0);
                    statusStrip2.Items[0].Text = "Файл " + string.Format("F000{0}.xml", xml_filename) + " отправлен";
                }
                catch
                {
                    statusStrip2.Items[0].Text = "Ошибка! Файл " + string.Format("F000{0}.xml", xml_filename) + " не отправлен";
                }
Буду благодарен за помощь

Решение задачи: «Плучить список подключившихся клиентов к серверу»

textual
Листинг программы
listBox1.Clear();
listBox1.Items.AddRange(list_clients);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы