私は、電話の1つがサーバーとして機能するAndroid電話のネットワークを持っています。宛先 IP を としてブロードキャストを実行しようとしています'255.255.255.255.'
。しかし、メッセージの送信に失敗します。以下にlogcatを示します。サーバーの IP は192.168.43.1
. 私も試してみました'192.168.43.255'
。しかし、それも無駄に終わった。コードについては、http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/を参照しました。
05-30 20:17:40.970: E/ClientActivity(698): java.net.UnknownHostException: /192.168.43.255
05-30 20:17:40.970: E/ClientActivity(698): at java.net.InetAddress.lookupHostByName(InetAddress.java:506)
05-30 20:17:40.970: E/ClientActivity(698): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
05-30 20:17:40.970: E/ClientActivity(698): at java.net.InetAddress.getByName(InetAddress.java:325)
05-30 20:17:40.970: E/ClientActivity(698): at project.android.aec.ConnectActivity$ClientThread.run(ConnectActivity.java:139)
05-30 20:17:40.970: E/ClientActivity(698): at java.lang.Thread.run(Thread.java:1019)
以下は、ブロードキャスト IP を取得するために使用されるコードです。
private InetAddress getBroadcastAddress() throws IOException {
mWifi= (WifiManager) getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcp = mWifi.getDhcpInfo();
if (dhcp == null) {
Log.d("BCast Address Fetch", "Could not get dhcp info");
return null;
}
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);
}