我正在为我的Android
手机制作一个Client Server应用程序.
我创建了一个UDP
服务器,Python
其中坐着并侦听连接.
我可以IP
直接放置服务器地址192.169.0.100
,它可以很好地发送数据.我也可以放入192.168.0.255
并找到服务器192.169.0.100
.
是否可以获取我的Android手机所连接的网络的广播地址?我只会在我的Wifi
网络或其他Wifi
网络上使用此应用程序.
干杯
从
http://code.google.com/p/boxeeremote/source/browse/trunk/Boxee+Remote/src/com/andrewchatham/Discoverer.java?spec=svn28&r=28
private InetAddress getBroadcastAddress() throws IOException { WifiManager wifi = (WifiManager) 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)); return InetAddress.getByAddress(quads); }
这样做的好处就是只看WIFI.我知道OP说"我只会在我的Wifi网络或其他Wifi网络上使用这个应用程序." 但值得一提的是,如果其他人需要非wifi替代品.
这是一个应该工作的方法:
public static String getBroadcast(){ String found_bcast_address=null; System.setProperty("java.net.preferIPv4Stack", "true"); try { EnumerationniEnum = NetworkInterface.getNetworkInterfaces(); while (niEnum.hasMoreElements()) { NetworkInterface ni = niEnum.nextElement(); if(!ni.isLoopback()){ for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) { found_bcast_address = interfaceAddress.getBroadcast().toString(); found_bcast_address = found_bcast_address.substring(1); } } } } catch (SocketException e) { e.printStackTrace(); } return found_bcast_address; }