Как получить IP-адрес системы после подключения USB-телефона?
Я разрабатываю мобильное приложение на Android.
Здесь я хочу, чтобы определить IP-адрес компьютера, системы и т. Д. После подключения USB любого телефона Android
Я не могу найти решение.
Если я поставлю следующий код, то он берет только IP-адрес телефона, мне нужен IP-адрес системы
Ниже приведен код
ArrayList<InetAddress> arrayList=new ArrayList<InetAddress>();
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
arrayList.add(inetAddress);
inetAddress=null;
}
}
} catch (SocketException ex) {
Log.e("SALMAN", ex.toString());
}
return arrayList;
Пожалуйста, помогите мне получить IP-адрес системы. Если мы не можем получить средства, пожалуйста, укажите меня. Потому что я новичок в Android.
Я использую Android 1.6.
В системе Windows XP есть приложение на стороне сервера. Это приложение является службой Windows, разработанной C#.net.
Эта служба Windows прослушивает некоторый порт, такой как 234 и т. Д. Если некоторые данные поступают на порт, то они обрабатывают данные и отправляют ответ через этот порт.
В андроиде приложение для андроид отправляет данные в службу windows через сокет.
Телефон Android подключен к системе, в которой запущена служба Windows, через USB. Система предполагает, что телефон Android является модемом, и для системы генерируется дополнительный IP-адрес. Этот ip-адрес генерируется динамически при подключении телефона Android.
Для передачи данных с мобильного телефона в систему через сокет. Мне нужно будет указать ip-адрес системы (после привязки) в моем коде Android.
Если есть какой-либо метод в Android-кодировании, чтобы получить этот IP-адрес.
Все, пожалуйста, дайте свои идеи по этому поводу.
2 ответа
Невозможно найти IP-адрес, созданный в ПК от Android после привязки. Нет API или другого способа найти его.
Если вы используете InetAddress, он вернет 192.168.42.129 - это адрес DHCP, созданный с помощью USB Tethering. Это не поможет вам общаться.
Другой способ - отсканировать список IP. USB Tethering создаст IP в диапазоне от 192.168.42.1 до 192.168.42.255 . Вы можете написать простой сканер, чтобы найти, какой из них активен. Но это займет некоторое время.
Благодаря "Плавай N Плавай" выше. Я нашел код на Получить IP и MAC-адреса из /proc/net/arp (Android)
и немного изменил, чтобы получить первый IP-адрес, имеющий действительный MAC-адрес. Прекрасно работает при разработке в качестве одного пользователя на вашем компьютере с привязкой. Вы можете перейти по ссылке выше для получения дополнительных IP-адресов на основе названия компании и т. Д.
public static String getUSBThetheredIP() {
BufferedReader bufferedReader = null;
String ips="";
try {
bufferedReader = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = bufferedReader.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null && splitted.length >= 4) {
String ip = splitted[0];
String mac = splitted[3];
if (mac.matches("..:..:..:..:..:..")) {
if (mac.matches("00:00:00:00:00:00")) {
//Log.d("DEBUG", "Wrong:" + mac + ":" + ip);
} else {
//Log.d("DEBUG", "Correct:" + mac + ":" + ip);
ips = ip;
break;
}
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return ips;
}
Обратите внимание, что каждый раз, когда вы привязываетесь к другому пользователю, вы должны запускать apache или другие процессы на ПК, чтобы новые IP вступили в силу. Это то, что я испытал.