Плучить список подключившихся клиентов к серверу - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д