我想从一个充当热点的Android设备广播,但使用255.255.255.255在android中不能用作UDP广播。但192.168.1.255这个广播地址有效。当我检查设备的IP地址时,它显示192.168.1.4。
现在如何从这个地址计算地址192.168.1.255?
答案 0 :(得分:3)
好吧,如果您已完成广播并且只需要将地址的最后一个字节更改为255,则可以执行以下操作:
String getBroadcastAddress( final String address ) throws UnknownHostException {
InetAddress addr = InetAddress.getByName( address );
if( InetAddress instanceof Inet4Address ) {
byte[] bytes = addr.getAddress();
bytes[3] = 255;
return InetAddress.getByAddress( bytes ).getHostAddress();
} else {
... deal with ipv6
}
}
直接从NetworkInterface拉出广播地址,产生以下代码:
public static String getBroadcast() throws SocketException {
System.setProperty("java.net.preferIPv4Stack", "true");
for( Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); interfaces.hasMoreElements(); ) {
NetworkInterface nif = interfaces.nextElement();
if( !nif.isLoopback() ) {
for( InterfaceAddress addr : nif.getInterfaceAddresses() ) {
return addr.getBroadcast().toString().substring(1);
}
}
}
return null;
}
您可能需要筛选NetworkInterface以找到与内部ip相对应的那个。