如何在Android手机的wifi网络中进行广播
我有一个安卓手机网络,其中一部手机充当服务器。我尝试使用目标IP作为如何在Android手机的wifi网络中进行广播,android,sockets,network-programming,android-wifi,Android,Sockets,Network Programming,Android Wifi,我有一个安卓手机网络,其中一部手机充当服务器。我尝试使用目标IP作为'255.255.255.255.进行广播。但它无法发送消息。我给下面的日志。服务器IP为192.168.43.1。我也尝试过使用'192.168.43.255'。但结果也是徒劳的。对于代码,我已经提到了 下面是用于获取广播IP的代码 private InetAddress getBroadcastAddress() throws IOException { mWifi= (WifiManager) get
'255.255.255.255.
进行广播。但它无法发送消息。我给下面的日志。服务器IP为192.168.43.1
。我也尝试过使用'192.168.43.255'
。但结果也是徒劳的。对于代码,我已经提到了
下面是用于获取广播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);
}
private InetAddress getBroadcastAddress()引发IOException{
mWifi=(WifiManager)getSystemService(Context.WIFI_服务);
DhcpInfo dhcp=mWifi.getDhcpInfo();
如果(dhcp==null){
Log.d(“BCast地址获取”,“无法获取dhcp信息”);
返回null;
}
int broadcast=(dhcp.ipAddress&dhcp.netmask)|~dhcp.netmask;
字节[]四元组=新字节[4];
对于(int k=0;k<4;k++)
四元组[k]=(字节)((广播>>k*8)和0xFF);
返回InetAddress.getByAddress(quads);
}
这是我用来获取广播地址的
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (InterfaceAddress address : intf.getInterfaceAddresses()) {
System.out.println(address.getBroadcast().toString().substring(1));;
}
}
for(枚举en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){
NetworkInterface intf=en.nextElement();
for(InterfaceAddress地址:intf.getInterfaceAddress()){
System.out.println(address.getBroadcast().toString().substring(1));;
}
}
参考链接中的代码是一个简单的TCP服务器/客户端。如果您发布用于UDP广播的代码会更好。Netmask是255.255.255.0。我已经编辑了这个问题,添加了用于查找广播地址的代码。就我而言,它是192.168.43.255
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (InterfaceAddress address : intf.getInterfaceAddresses()) {
System.out.println(address.getBroadcast().toString().substring(1));;
}
}