Android Socket-ready обнаружение? - PullRequest
0 голосов
/ 24 января 2012

Я программирую приложение для Android, позволяющее отправлять сообщения между устройствами, которые подключены к одной локальной сети. Я закончил часть программирования сокетов, каждое устройство может быть сервером или клиентом, один клиент может одновременно подключаться только к одному серверу (и наоборот). Проблема в том, что мне нужно знать IP-адрес сервера, к которому я хочу подключиться, а затем ввести его вручную на стороне клиента.

Я пытаюсь установить функцию, подобную многопользовательскому режиму игры: вы нажимаете кнопку «Показать», и все доступные хосты (в моем приложении это серверы) будут отображаться, затем я могу выбрать хозяин я хочу. Но я понятия не имею, как этого достичь или с чего начать.

Любая помощь будет оценена. Большое спасибо!

1 Ответ

1 голос
/ 24 января 2012

Вы также должны создать DatagramSocket, который будет использоваться для широковещательной передачи, на другом порту, и каждое устройство, которое хочет быть Server, должно транслировать пакет со своим ip.Вы должны взглянуть на Все о датаграммах , хотя в нем нет примера трансляции.Например, чтобы отправить трансляцию, вы должны взглянуть на следующий код:

DatagramSocket mServerSocket = new DatagramSocket(PORT);
InetAddress  broadcastAddress=InetAddress.getByName("255.255.255.255");
byte[] data=new byte[1024];
data="your_data_string_example".getBytes();
DatagramPacket packet=new DatagramPacket(sendData,
                            sendData.length,broadcastAddress,PORT);
mServerSocket.setBroadcast(true);
mServerSocket.send(packet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...