Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2014, 09:55   #11
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Да там всё просто, лисапед, он и в африке лисапед:
Ну пнятно.
т.е. "немного больше памяти" - это.... 255*255*255*255*65535 = 277102632960000 байт, да? Т.е. я беру 255 терабайт и проблема решается за О(1)? - шикарно!!!
еще Ipv6 может однажды появиться...

Последний раз редактировалось rrrFer; 11.10.2014 в 09:59.
rrrFer вне форума Ответить с цитированием
Старый 11.10.2014, 10:04   #12
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от .AJIADb9 Посмотреть сообщение
просто сделать client[ip][port] в котором как раз-таки хранится, например, идентификатор пользователя?
Зачем вам идентификатор пользователя?
Вы замените одни данные (ip, port) другими (идентификатором) - в чем (по вашему) будет разница?
Далее, откуда вообще берется этот идентификатор? Вот подключилось новое соединение - как вы поймете кто это?
waleri вне форума Ответить с цитированием
Старый 11.10.2014, 11:10   #13
.AJIADb9
Пользователь
 
Регистрация: 10.10.2014
Сообщений: 12
По умолчанию

забыл отписаться - выстрелил себе в ногу (со своим супер-алгоритмом), а точнее уронил на неё кирпич

Последний раз редактировалось .AJIADb9; 11.10.2014 в 11:14.
.AJIADb9 вне форума Ответить с цитированием
Старый 11.10.2014, 11:11   #14
.AJIADb9
Пользователь
 
Регистрация: 10.10.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Зачем вам идентификатор пользователя?
Вы замените одни данные (ip, port) другими (идентификатором) - в чем (по вашему) будет разница?
Далее, откуда вообще берется этот идентификатор? Вот подключилось новое соединение - как вы поймете кто это?
он выдаст мне логин/пароль я скажу: ага, это чувак с id==#
.AJIADb9 вне форума Ответить с цитированием
Старый 11.10.2014, 11:12   #15
.AJIADb9
Пользователь
 
Регистрация: 10.10.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Ну пнятно.
т.е. "немного больше памяти" - это.... 255*255*255*255*65535 = 277102632960000 байт, да? Т.е. я беру 255 терабайт и проблема решается за О(1)? - шикарно!!!
еще Ipv6 может однажды появиться...
как я и говорил...надо было просто посчитать...
.AJIADb9 вне форума Ответить с цитированием
Старый 11.10.2014, 11:16   #16
.AJIADb9
Пользователь
 
Регистрация: 10.10.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Зачем вам идентификатор пользователя?
Вы замените одни данные (ip, port) другими (идентификатором) - в чем (по вашему) будет разница?
Далее, откуда вообще берется этот идентификатор? Вот подключилось новое соединение - как вы поймете кто это?
Хорошо, парень выдал мне логин/пароль, я понял, что это он и есть, дальше мне каждое его подключение "опознавать" его по (IP, port), в map'e?
ибо важно, кто прислал мне сообщение.

Каждый пользователь - объект, соотв-но пришедшее сообщение нужно обработать и изменить этот объект каким-либо образом.
При подключении нового пользователя: в массив объектов-пользователей (std::map) добавляется ещё один элемент.
Надеюсь я верно понял логику?

Последний раз редактировалось .AJIADb9; 11.10.2014 в 11:21.
.AJIADb9 вне форума Ответить с цитированием
Старый 11.10.2014, 13:04   #17
.AJIADb9
Пользователь
 
Регистрация: 10.10.2014
Сообщений: 12
По умолчанию

Получается, в качестве key type - sockaddr_in client_addr, а в качестве data type - class Users?(ну, например)
.AJIADb9 вне форума Ответить с цитированием
Старый 11.10.2014, 13:10   #18
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Каждое его подключение будет приходить с разных портов а возможно и с разных IP адресов, так что при каждом подключении нужно будет проверять логин и пароль. После каждого логина добавляем пару сокет/объект в мап. Не забывайте только удалять при завершении сессии.

Все сказанное относится к TCP протоколу. Для UDP придется придумывать схему посложнее и действительно придется мапить PORT:IP к объекту но сути дела это не меняет.

Для TCP легче и надежнее сделать
std::map<socket, object*>
Да, можно сделать и std::map<sockaddr_in, object*> но для TCP это лишнее
waleri вне форума Ответить с цитированием
Старый 11.10.2014, 14:12   #19
.AJIADb9
Пользователь
 
Регистрация: 10.10.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Каждое его подключение будет приходить с разных портов а возможно и с разных IP адресов, так что при каждом подключении нужно будет проверять логин и пароль. После каждого логина добавляем пару сокет/объект в мап. Не забывайте только удалять при завершении сессии.

Все сказанное относится к TCP протоколу. Для UDP придется придумывать схему посложнее и действительно придется мапить PORT:IP к объекту но сути дела это не меняет.

Для TCP легче и надежнее сделать
std::map<socket, object*>
Да, можно сделать и std::map<sockaddr_in, object*> но для TCP это лишнее
Спасибо за развёрнутый ответ, соединение UDP.
Первую часть вопроса я частично продумал меня интересует только "середина", как быстрее найти того юзверя, который стучится под определённым PORT:IP.
Тоесть мапить PORT:IP - не бред? Спасибо, так и поступлю =)
Если есть всё-таки что-то рациональнее мапинга PORT:IP, можете предложить?

Последний раз редактировалось .AJIADb9; 11.10.2014 в 14:17. Причина: давно продумал - > частично продумал
.AJIADb9 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База клиентов Eangwar Свободное общение 1 17.05.2013 22:48
TServerSocket - количество клиентов Don Karleone Работа с сетью в Delphi 10 15.02.2012 00:43
Идентификация клиентов TClientSockets ArtGrek Работа с сетью в Delphi 2 28.02.2011 13:36
Запрос активных клиентов mavlon_m SQL, базы данных 4 23.02.2011 11:13