С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260

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

22.05.2012, 16:21. Показов 4168. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.05.2012, 16:21
Ответы с готовыми решениями:

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

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

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

3
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
22.05.2012, 19:02
хмм... используй конструкцию 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  [ТС]
Я понял ) А в какой инструмент это лучше засунуть? )
Спасибо )

Добавлено через 24 минуты
я имел ввиду список визуальный )
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
23.05.2012, 00:00
romasimeiz, используй компонент ListBox
напрмиер добавляешь на форму сам листбокс, а в коде добавляешь элементы
C#
1
2
listBox1.Clear();
listBox1.Items.AddRange(list_clients);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.05.2012, 00:00
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru