Как получить IP-адрес системы после подключения USB-телефона?

1


Я разрабатываю мобильное приложение в 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-адреса.
Все, пожалуйста, дайте свои идеи относительно этого.

  • 0
    Какой «системы» вы хотите IP-адрес? Помните, что вы должны учитывать, что IP-адрес относится к другим «системам». При подключении существует большая вероятность того, что для любого устройства в цепочке существует несколько IP-адресов - как внутренних, так и внешних. Что вы хотите сделать с IP-адресом, который вы хотите найти?
  • 0
    Уважаемый mbanzon, я хочу передавать данные между мобильным телефоном и системой (которая называется) через сокетное соединение в Android.
Показать ещё 1 комментарий
Теги:
networking
usb
mobile-application
android-1.6-donut

2 ответа

6
Лучший ответ

Невозможно найти IP-адрес, созданный на ПК от android после привязки. Нет API или другого способа его найти.

Если вы используете InetAddress, он вернет 192.168.42.129 - это DHCP-адрес, созданный USB Tethering. Это не поможет вам общаться.

Другой способ - просмотреть список IP-адресов. USB Tethering создаст ip-диапазон для 192.168.42.1 до 192.168.42.255. Вы можете написать простой сканер, чтобы узнать, какой из них активен. Но это займет некоторое время.

  • 0
    Спасибо за вашу идею Droid Dev
  • 5
    Или просто используйте / proc / net / arp :)
1

Благодаря "Плавать 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. Это то, что я испытал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню