В моем приложении я хочу транслировать некоторые пакеты UDP. В настоящее время я использую этот метод для получения требуемого широковещательного адреса:
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);
}
-> https://code.google.com/p/boxeeremote/wiki/AndroidUDP а>
Это работает нормально, но если устройство активировало точку доступа и пытается передать пакет после того, как было выброшено исключение SocketException: SocketException: sendto failed: ENETUNREACH (Network is unreachable)
Как я могу получить правильный широковещательный адрес на устройстве, которое "предоставляет" точку доступа? Все одноадресные адреса, которые я пробовал, работали нормально...
Спасибо и с уважением
PS: минимальный SDK - API 8!