c ++ socket accept, список подключенных клиентов - PullRequest
0 голосов
/ 06 мая 2018

У меня есть несколько вопросов о сокете в c ++!

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

Второй вопрос, как загрузить список всех подключенных в данный момент клиентов, чтобы потом можно было отправить сообщение всем?

1 Ответ

0 голосов
/ 07 мая 2018

У меня есть несколько вопросов о сокете в c ++!

Для дальнейшего использования, пожалуйста, оставляйте только один вопрос за раз. Если у вас есть несколько вопросов, разместите их отдельно.

допустим, он пишет сервер для игры, в котором он будет играть одновременно 200 человек, но прием заблокирован, потому что он уже обслуживает одного клиента, как с этим бороться?

Используйте сокеты в неблокирующем режиме, используя select() / (e)poll() или другие механизмы обратного вызова, чтобы узнать, какие сокеты имеют ожидающую активность и когда.

В противном случае используйте accept() в отдельном потоке, чем другие потоки, используемые для обслуживания подключенных клиентов.

как скачать список всех подключенных в данный момент клиентов, чтобы потом можно было отправить сообщение всем?

Сервер отвечает за отслеживание подключенных клиентов. Затем он может перебирать этот список при необходимости.

Если клиент хочет отправить сообщение каждому другому клиенту, лучше всего отправить одно сообщение на сервер и попросить сервер передать сообщение каждому другому клиенту.

В противном случае клиент должен будет запросить список с сервера, а затем отправить сообщение каждому другому клиенту в отдельности.

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