![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Enelar |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 13.1.2008 Репутация: нет Всего: 1 |
Вопрос такой. Есть порт например 55555.
Есть миллион клиентов подключенных к этому порту. На какойто итерации мы вызываем функцию recv(). Получили очередной пакет. Как нам понять от какого клиента пакет (если никакой информации в пакете о клиенте нет) |
|||
|
||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Для каждого отдельного подключившегося клиента функция accept() создает присоединенный сокет, и адрес этого сокета (IP и порт)формируются в структуре адреса клиента
int accept(int sd, struct sockaddr *client_addr, int *addrlen); посмотреть можно функцией getpeername() |
|||
|
||||
Enelar |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 13.1.2008 Репутация: нет Всего: 1 |
Вы видимо не совсем верно поняли вопрос.
Вот у нас есть SOCKET local - тот сокет который мы проверяем на входящие сообщения. SOCKET ClientsSocket[10000]; struct sockaddr ClientsAddr[10000]; Вот, мы поключили 1000 клиентов, получили их данные. Далее через n секунд пришел пакет на наш порт. Мы проверили local - пришло сообщение. Вопрос от какого из 1000 клиента. |
|||
|
||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Если я неверно понял - значит так объяснили.
У сервера есть слушающий сокет - постоянный на все время работы сервера Это тот сокет, для которого выполняется listen() Проверить сразу, при получении заявки на соединение - невозможно - так как вся информация, поступающая во время троекратного рукопожатия, хранится в таблице подключений моуля TCP - и доступ туда с уровня пользователя невозможен Скорее всего это и есть ваш local Но на слушающий сокет СООБЩЕНИЯ НЕ ПРИХОДЯТ - они приходят только на клиентский. Это сообщение отредактировал(а) Олег2005 - 29.1.2009, 00:32 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |