Парные розетки - PullRequest
       7

Парные розетки

0 голосов
/ 07 марта 2011

У меня есть серверная программа (работает на всех трех основных операционных системах), созданная на с ++, которая стремится соединить двух незнакомцев для общения. Моя текущая модель кажется устаревшей, и мне просто интересно, есть ли лучший способ обслужить клиентов.

-сервер получает запрос на соединение
чеки на бан
-стартовая нить для этого сокета


[поток просто повторяет эти шаги]

-подтверждение связи с партнером (чеком-менеджером)
-если несвязанный запрос партнера из класса менеджера
-получить на мой сокет <- клиент отправляет пакеты с поддержкой активности каждые 2 с или около того <br> -на отключить сообщить менеджеру, и закрыть поток.


[класс менеджера работает так]

-адд сокет: push_back для моего вектора sockPairs
-request partner: найти неподключенную sockPair, если она не существует, создать новую sockPair, после подключения пометить sockPair для удаления, если уже помечено, удалить его. -remove socket: добавить флаг к идентификатору менеджера партнера, которого я отключил
-check socket: проверить идентификатор менеджера на предмет отключения


Я думаю, что карта была бы намного более эффективной, однако я не уверен, так как я никогда не работал с ними, что еще вы думаете, я должен изменить? Я надеюсь, что смогу обслужить 200 клиентов с этой моделью, я действительно не уверен, сможет ли текущая модель справиться с этим ...

1 Ответ

2 голосов
/ 07 марта 2011

Поток на соединение просто не масштабируется .Вам нужно использовать такой механизм, как select (), poll (), epoll (), WSAAsyncSelect () или любой другой, который позволит вам запрашивать набор сокетов для событий.Затем вы обрабатываете каждый сокет по порядку и повторяете.

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