Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260
1

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

22.05.2012, 16:21. Показов 2916. Ответов 3
Метки нет (Все метки)

Всем доброго времени суток! Возникла следующая задача:
У меня есть сервер, к которому подключается некоторое количество клиентов.
Подключившихся клиентов нужно добавлять в список, который отображается непосредственно в программе и по мере их отключения/ обратного подключения удалять/добавлять в список в данный момент. Задача вроде бы не сложная, но с шарпом работаю недолго, многого не умею/не знаю ( Заранее благодарю )
Глобально объявляю вот что:
C#
1
2
3
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);
По нажатии на кнопку делаю вот что:
C#
1
2
3
4
list_clients.Clear();
            btn_load.Enabled = true;
            btn_open_path.Enabled = true;
            BeginAcceptClient(listen);
Вот сами функции:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 = "Ошибка при попытке поиска клиентов";
            }
 
        }

Отправляю файлы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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) + " не отправлен";
                }

Буду благодарен за помощь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2012, 16:21
Ответы с готовыми решениями:

Как хранить список подключившихся клиентов?
Взялся за изучение windows sockets. Почитал несколько неплохих статей, для лучшего понимания...

Сделать список из клиентов, которые присоединены к серверу
Всем доброго времени суток , вопрос достаточно глупый , но думаю среди новичков актуальный . Нечего...

Невозможность подключения клиентов к серверу
Здравствуйте. Проблема заключается в следующем: клиенты не могут подключится к моему серверу (во...

Постановка в очередь клиентов, подключающихся к серверу
Здравствуйте! Пишу сервер и клиент к нему. Клиент подключается к серверу и вызывает нужные методы,...

3
Футболист
526 / 428 / 142
Регистрация: 31.10.2011
Сообщений: 1,008
22.05.2012, 19:02 2
хмм... используй конструкцию foreach
Клац
C#
1
2
3
4
foreach (TcpClient user in list_clients)//user - буфферная переменная, содржащая каждого последующего кливента в каждом шаге начиная с первого, list_clients - набор данных(ну ты понял, ето лист)
            {
                System.Console.WriteLine(user.name);
            }

у тебя в программе есть foreach, зачем ты спрашиваеш если ты уже сделал пересчет.
0
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260
22.05.2012, 23:51  [ТС] 3
Я понял ) А в какой инструмент это лучше засунуть? )
Спасибо )

Добавлено через 24 минуты
я имел ввиду список визуальный )
0
347 / 326 / 49
Регистрация: 12.12.2011
Сообщений: 563
23.05.2012, 00:00 4
romasimeiz, используй компонент ListBox
напрмиер добавляешь на форму сам листбокс, а в коде добавляешь элементы
C#
1
2
listBox1.Clear();
listBox1.Items.AddRange(list_clients);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2012, 00:00

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

ServerSocket передача файлов от клиентов серверу
Нужна помощь! Есть приложение для win. Сервер - клиент для передачи файлов. Работает это все дело...

Передача сообщения от клиентов к серверу Socket
Доброго времени суток, сидел целые 2 сутки думал разберусь сам... но не тут то было... Суть...

Реализовать возможность подключения к серверу до пяти клиентов
Хотел сделать с помощью ThreadPool но не смог прикрутить к серверу :( И хотелось бы чтобы если 5...

Одновременное подключение несколько клиентов к одному серверу
Столкнулся с задачей. Есть сервер, который отправляет xml сообщения на клиент. Нужно сделать чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.