Androidエミュレーターでコードを使用してPCのIPアドレスを取得したい....または、LANに接続されているすべてのデバイスのIPアドレスを取得して、それぞれを一意に識別するように教えてください.......並べ替えを手伝ってくださいこの問題を出して
前もって感謝します
Androidエミュレーターでコードを使用してPCのIPアドレスを取得したい....または、LANに接続されているすべてのデバイスのIPアドレスを取得して、それぞれを一意に識別するように教えてください.......並べ替えを手伝ってくださいこの問題を出して
前もって感謝します
このコードを使用して、外部 IP アドレスを取得します
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://api.externalip.net/ip/");
HttpResponse response = null;
try
{
response = httpclient.execute(httpget);
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
Log.e("",""+response);
HttpEntity entity = response.getEntity();
if (entity != null) {
long len = entity.getContentLength();
if (len != -1 && len < 1024)
{
try
{
str=EntityUtils.toString(entity);
Log.e("",""+str);
}
catch (ParseException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
上記の機能は、それぞれがデバイスに接続する方法に応じて、IP アドレスが 1 つずつ追加される arp キャッシュを確認することによってのみ可能です。以下のコードを使用して確認してください。適切な名前のボタンを配置し、クリック時にこのメソッドを呼び出すだけです
public void getClientList() {
int macCount = 0;
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null && splitted.length >= 4) {
// Basic sanity check
String mac = splitted[3];
if (mac.matches("..:..:..:..:..:..")) {
macCount++;
ClientList.add("Client(" + macCount + ")");
IpAddr.add(splitted[0]);
HWAddr.add(splitted[3]);
Device.add(splitted[5]);
Toast.makeText(
getApplicationContext(),
"Mac_Count " + macCount + " MAC_ADDRESS "
+ mac, Toast.LENGTH_SHORT).show();
for (int i = 0; i < splitted.length; i++)
System.out.println("Addressssssss "
+ splitted[i]);
}
}
}
// ClientList.remove(0);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}