Я разрабатываю мобильное приложение в 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 1.6.
В системе windows xp есть серверное приложение. Это приложение является службой Windows, разработанной С#.net.
Эта служба Windows прослушивает какой-то порт, такой как 234 и т.д. Если некоторые данные поступают в порт, он обрабатывает данные и отправляет ответ через этот порт.
В android приложение Android отправляет данные в службу Windows через сокет.
Android-телефон привязан к системе, в которой работает служба Windows. Затем система предполагает, что телефон Android имеет модем, и для системы создается дополнительный IP-адрес. Этот IP-адрес динамически генерируется при привязке телефона Android.
Для передачи данных форма мобильной в систему через сокет. Мне нужно будет указать IP-адрес системы (после привязки) в моей кодировке Android.
Если есть какой-либо метод в кодировке android для получения этого IP-адреса.
Все, пожалуйста, дайте свои идеи относительно этого.
Невозможно найти IP-адрес, созданный на ПК от android после привязки. Нет API или другого способа его найти.
Если вы используете InetAddress, он вернет 192.168.42.129 - это DHCP-адрес, созданный USB Tethering. Это не поможет вам общаться.
Другой способ - просмотреть список IP-адресов. USB Tethering создаст ip-диапазон для 192.168.42.1 до 192.168.42.255. Вы можете написать простой сканер, чтобы узнать, какой из них активен. Но это займет некоторое время.
Благодаря "Плавать N плавать" выше. Я нашел код на Retrieve 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. Это то, что я испытал.