Возможно, вы захотите посмотреть UDP-трансляции, когда ваш сервер объявляет о себе, а телефон прослушивает трансляции.
Существует пример из удаленного проекта Boxee,цитируется ниже.
Получение широковещательного адреса
Вам необходимо получить доступ к диспетчеру wifi, чтобы получить информацию DHCP и построить широковещательный адрес из этого:
InetAddress getBroadcastAddress() throws IOException {
WifiManager wifi = mContext.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcp = wifi.getDhcpInfo();
// handle null somehow
int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
return InetAddress.getByAddress(quads);
}
Отправка иПолучение широковещательных пакетов UDP
После создания широковещательного адреса все работает как обычно.Следующий код будет отправлять строковые данные по широковещанию и затем ждать ответа:
DatagramSocket socket = new DatagramSocket(PORT);
socket.setBroadcast(true);
DatagramPacket packet = new DatagramPacket(data.getBytes(), data.length(),
getBroadcastAddress(), DISCOVERY_PORT);
socket.send(packet);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
Вы также можете заглянуть в Bonjour / zeroconf, и есть реализация Java это должно работать на Android.