Сканирование сетевых игровых серверов с помощью winsock - PullRequest
6 голосов
/ 09 июля 2010

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

Нужно ли пытаться «подключиться» к каждому IP в локальной сети, например, пытаться подключиться к 192.168.0.1, затем к 192.168.0.2 и т. Д.? Есть ли лучший способ?

Ответы [ 4 ]

3 голосов
/ 09 июля 2010

Вы будете использовать трансляцию для рекламы своих серверов в локальной сети.Затем клиенты могут прослушивать эти трансляции, чтобы «найти» серверы.

Подробнее см. Здесь: http://tangentsoft.net/wskfaq/intermediate.html#broadcast

2 голосов
/ 22 июля 2010

Я думаю, что есть два возможных способа сделать это.

  1. Создайте «лобби», к которому подключаются клиенты и серверы, чтобы они могли найти друг друга через него.

  2. Серверы транслируют UDP-пакеты. Клиенты слушают и обновляют список серверов.

Если вам нужен быстрый и простой способ, второй вариант был бы полезен, но помните, что большинство пакетов UDP будут потрачены впустую, поскольку они используются только один раз для каждого клиента.

Первый вариант - более общее и продолжительное решение этой проблемы. Тем не менее, может потребоваться больше времени для разработки и реализации.

2 голосов
/ 09 июля 2010

Обычно эти игровые серверы используют локальную широковещательную UDP-рассылку, которую все клиенты получают и могут обрабатывать, пока они ее слушают.

Вот пример кода клиента и сервера, который я обнаружил, который можетпредставлять интерес для вас: http://visual -c.itags.org / visual-c-c ++ / 29424 /

0 голосов
/ 09 июля 2010

Прежде всего, я предлагаю вам получить wireshark для любой сетевой разработки.Он покажет вам, какой пакет проходит через провод.Это позволит вам увидеть, как это делают другие игры, поскольку есть много способов сделать это.

Использование широковещания UDP - один из способов сделать это.Просто измените последний байт целевого ip на 255, и все будет в порядке.

...