Структура данных для управления группами на сервере чата - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть клиент чата во flash, использующий бинарные сокеты, и сервер в C / linux, использующий сокеты и libev. У меня все работает правильно для отправки и получения сообщений, но теперь я перешел к более сложному шагу.

Для моего сервера чата я буду группировать пользователей в группы по 15. Сервер должен иметь уникальный идентификатор для каждого пользователя и иметь возможность быстро определить, в какую группу входит пользователь, чтобы передать сообщение другим 14 пользователям. , Я думаю, что сервер мог бы использовать файловый дескриптор для каждого соединения с сокетом, поскольку все они должны быть уникальными.

Проблема заключается в следующем: вы получаете событие чтения, запускаемое из libev для определенного файлового дескриптора. Теперь вам нужно быстро определить, к какой группе принадлежит этот FD, и затем передать сообщение всем в группе. Какова лучшая структура данных для этой проблемы?

1 Ответ

1 голос
/ 21 февраля 2012

HashTable.У каждого пользователя должен быть свой идентификатор группы, и hashTable будет использовать groupID как ключи, а массивы UserID как значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...