Dies ist mein Code IP-Adressen im lokalen Netzwerk für die Suche. Zuerst müssen Sie die IP-Adresse Ihres Geräts finden und dann jede IP-Adresse mit der IP-Adresse subnet
pingen. Angenommen, die IP-Adresse des Geräts lautet 192.168.0.100
, dann ist subnet
192.168.0.
. und dann ping jede IP-Adressen 192.168.0.1
-192.168.0.255
für IP-Adresse des Geräts finden Sie zwei Verfahren verwenden: 1 Methode:
String ip = "";
Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface.getNetworkInterfaces();
while(enumNetworkInterfaces.hasMoreElements())
{
NetworkInterface networkInterface = enumNetworkInterfaces.nextElement();
Enumeration<InetAddress> enumInetAddress = networkInterface.getInetAddresses();
while(enumInetAddress.hasMoreElements())
{
InetAddress inetAddress = enumInetAddress.nextElement();
String ipAddress = "";
if(inetAddress.isSiteLocalAddress())
{
ipAddress = "SiteLocalAddress: ";
}
ip += ipAddress + inetAddress.getHostAddress() + "\n";
String subnet = getSubnetAddress(ip);
private String getSubnetAddress(int address)
{
String ipString = String.format(
"%d.%d.%d",
(address & 0xff),
(address >> 8 & 0xff),
(address >> 16 & 0xff));
return ipString;
}
2 Methode:
WifiManager mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
String subnet = getSubnetAddress(mWifiManager.getDhcpInfo().gateway);
Nach Subnetz-Adresse zu finden, ping jeder IP-Adressen im Netzwerk:
Nach dem Ping jedes IP-Adressen dann Android Kernel-Datei gespeichert diese IP-Adresse w ho sind in Netzwerken. Sie können diese Liste abrufen, indem Sie die AndroidOS-Datei aufrufen. Diese Datei ist arp
, die in /proc/net/
in Android gespeichert ist. Sie können durch den Code gelangen. Führen Sie einfach bestimmten Befehl programmatisch und in Ihrem modelData gespeichert dann Listview Durch Adapter mitteilen:
ArrayList<IpAddress> mIpAddressesList;
private boolean getIpFromArpCache()
{
BufferedReader br = null;
char buffer[] = new char[65000];
String currentLine;
try
{
br = new BufferedReader(new FileReader("/proc/net/arp"));
while ((currentLine = br.readLine()) != null)
{
Log.d(TAG, "getIpFromArpCache() :: "+ currentLine);
String[] splitted = currentLine.split(" +");
if (splitted != null && splitted.length >= 4)
{
String ip = splitted[0];
String mac = splitted[3];
if (!splitted[3].equals(emptyMac))
{
if (!splitted[0].equals(IP))
{
// int remove = mac.lastIndexOf(':');
// mac = mac.substring(0,remove) + mac.substring(remove+1);
mac = mac.replace(":", "");
Log.i(TAG, "getIpFromArpCache() :: ip : "+ip+" mac : "+mac);
mIpAddressesList.add(new IpAddress(ip, mac));
}
}
}
}
return true;
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return false;
}
public class IpAddress
{
private String ipAddressName;
private String macAddress;
public IpAddress(String ipAddressName, String macAddress)
{
setIpAddressName(ipAddressName);
setMacAddress(macAddress);
}
public void setIpAddressName(String ipAddressName)
{
this.ipAddressName = ipAddressName;
}
public String getIpAddressName()
{
return this.ipAddressName;
}
public void setMacAddress(String macAddress)
{
this.macAddress = macAddress;
}
public String getMacAddress()
{
return this.macAddress;
}
}
Aber für diese Vernetzung Betrieb auf Hauptthread Durchführung nicht gut ist. Sie müssen den gesamten Code auf Thread schieben. und führe alle netzwerkbezogenen isses im Hintergrundthread aus. Hoffe es hilft dir. lassen Sie mich wissen, ob es funktioniert oder nicht. Wenn Sie brauchen, würde ich gerne .apk
dieser Demo teilen.
folgende URL kann Ihnen helfen http://stackoverflow.com/questions/3345857/how-to-get-a-list-of-ip-connected-in-same-network-subnet-using-java –