Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 8

Как хранить список подключившихся клиентов?

06.10.2014, 21:03. Показов 2145. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Взялся за изучение windows sockets. Почитал несколько неплохих статей, для лучшего понимания придумал задание - написать чат. Использую TCP подключение. Возникла проблема - как хранить список подключившихся клиентов к серверу (сокет+адрес для обратной отправки данных + другие поля)? Я думаю, нужно что-то вроде динамического массива/списка. Или может список указателей на структуры? Прошу помочь разобраться.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2014, 21:03
Ответы с готовыми решениями:

Плучить список подключившихся клиентов к серверу
Всем доброго времени суток! Возникла следующая задача: У меня есть сервер, к которому подключается некоторое количество клиентов. ...

Как хранить список слов в таблице?
Всем привет. Предположим, что при создании темы пользователь может указать, какие игры у него есть на аккаунте, которые он будет вводить...

В как лучше хранить конечный список?
Добрый день. Задача такая. Допустим у меня есть товар, который его привозят с разных уголков земного шара, но этот товар привозят лишь с...

2
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
06.10.2014, 22:57
Например, std::map<SOCKET, mydata>
0
2 / 2 / 2
Регистрация: 27.09.2014
Сообщений: 15
08.10.2014, 14:01
Лучший ответ Сообщение было отмечено Mayo0r как решение

Решение

Полностью независимый вариант со связным списком видимо будет такой :
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
struct clients {
  clients *next;   //следующий клиент
  int addr;          //IP адрес
  ...                  //еще что-нибудь (имя там...)
  clients *add(clients *&c0,int addr);  //добавить клиента
  void rem(clients *&c0,int addr);  //удалить клиента по адресу
  void clr(clients *&c0);  //очистить список клиентов
  clients();         //конструктор  
};
 
client::client()   //конструктор 
{
  next=0; 
  addr=0;
}
 
clients* clients::add(clients *&c0,int addr)  //добавить клиента
{
  clients *c,*c1,*cn;
  if(!c0) c0=cn=new clients;
  else {
    for(c=c1=c0;c;c=c->next) c1=c;
    c1->next=cn=new clients;
  }
  cn->addr=addr;
  return cn;
}
 
void clients::rem(clients *&c0,int ip) //удалить клиента по адресу
{
  clients *c,*cp;
  for(c=c0,cp=0;c;cp=c,c=c->next) 
     if(c->addr=ip) break;
  if(c) {
    if(!cp) c0=c->next;
    else cp->next=c->next;
    delete c;
  }
}
 
void clients::clr(clients *&c0)  //очистить список клиентов
{
   clients *c,*c1;
  for(c=c0;c;c=c1) {
    c1=c->next;
    delete c;
  }
  c0=0;
}
 
clients *cl0=0;  //глобальная переменная начала списка клиентов
 
cl0->add(cl0,ip);  //по событию Connect
 
cl0->rem(cl0,ip);  //по событию Disconnect
 
cl0->clr(cl0);      //по выходу из программы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2014, 14:01
Помогаю со студенческими работами здесь

Как лучше хранить список системных файлов
Собственно вопрос в название темы. Ваше мнение ? Есть список фалов из которых собирается ярдо, подключаются системные классы Смотрим...

Как удобнее/эффективнее хранить список пользователей
Добрый день. Решил поиграться с чатом в учебных целях. Сам чат уже практически написан (Java SE), но возник вопрос: &quot;Как хранить...

Как хранить список друзей каждого пользователя
Есть таблица Users (id, login, password). У каждого юзера есть список друзей(таких же юзеров). Как хранить этот список? Как я понимаю,...

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

Нужно, чтобы каждому клиенту переслался список клиентов, как лучше организовать
надо чтобы каждому клиенту переслался список клиентов как лутче организовать ? with form1.Ss.Socket do begin for i :=...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru