Показать сообщение отдельно
Старый 22.02.2014, 02:42
timm вне форума Посмотреть профиль Отправить личное сообщение для timm Найти все сообщения от timm
  № 1  
Ответить с цитированием
timm

Регистрация: May 2013
Сообщений: 15
По умолчанию Реализация поиска созданных игр в локальной сети

Захотел реализовать многопользовательскую игру в локальной сети на AIR. Почитал немного о сетевом программировании, уяснил как я буду передавать данные. Решил, что буду использовать UDP, так как хочу сделать игру в реальном времени. Дошёл до осмысления вопроса: как бы я сделал поиск созданных игр в меню. Приложение может как создавать игры в локальной сети, так подсоединяться к ним.

Предположим, что игрок создал игру на своём компьютере в локальной сети. Как можно донести пакет о поиске игр до этого компьютера клиенту в этой же сети? Так как компьютер-клиент изначально не знает, кто в его сети хостит игру на определённом порту. Куда и каким образом слать пакеты о желании подключиться так, чтобы сервер поймал эти пакеты и отправил обратно свой адрес клиенту для установления контакта? Я подумал, что надо слать на широковещательный адрес, который я нашёл в документации к классу InterfaceAdress (свойство broadcast).

На компьютере-клиенте может быть несколько сетевых интерфейсов с такими адресами, и я посчитал, что следует отправлять пакеты на широковещательные адреса всех доступных интерфейсов. Но в целях проверки, я просто взял один из таких адресов и запустил на него TCP-пакет. На другом конце тишина. При том если просто взять адрес сервера и вбить вручную, пакеты дойдут. Но повторюсь, клиент не может знать, кто создал игру в его сетях. Поправьте, если я неправ.

И каким образом это реализовать? Можно ли вообще достойно реализовать игру в локальной сети средствами AIR?

Добавлено через 45 часов 0 минут
Понял свою ошибку. Через TCP не посылаются широковещательные пакеты. Только UDP.


Последний раз редактировалось timm; 22.02.2014 в 03:20.