поиск Wi-Fi для устройств, подключенных к той же сети, т.е. кроме точки доступа (для Android) - PullRequest
1 голос
/ 09 декабря 2011

Я хочу внести изменения в мой проект, и сейчас статус проекта: ..... он ищет доступные сети WiFi и показывает список с информацией о сети, которая работает правильно.см. информацию об устройствах, подключенных к сети.Есть ли способ найти эти устройства?Ваш комментарий будет полезен для меня, спасибо.

Ответы [ 2 ]

11 голосов
/ 06 января 2012

Вы можете перебирать диапазоны IP-адресов и «пинговать» их. Это не лучший / самый быстрый метод (лучше UDP), но он работает во многих случаях. Приведенный ниже пример кода возвращает список IP-адресов, подключенных к текущей сети.

private int LoopCurrentIP = 0;

public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
    ArrayList<InetAddress> ret = new ArrayList<InetAddress>();

    LoopCurrentIP = 0;

    String IPAddress = "";
    String[] myIPArray = YourPhoneIPAddress.split("\\.");
    InetAddress currentPingAddr;

    for (int i = 0; i <= 255; i++) {
        try {

            // build the next IP address
            currentPingAddr = InetAddress.getByName(myIPArray[0] + "." +
                    myIPArray[1] + "." +
                    myIPArray[2] + "." +
                    Integer.toString(LoopCurrentIP));

            // 50ms Timeout for the "ping"
            if (currentPingAddr.isReachable(50)) {

                ret.add(currentPingAddr);
            }
        } catch (UnknownHostException ex) {
        } catch (IOException ex) {
        }

        LoopCurrentIP++;
    }
    return ret;
}
4 голосов
/ 09 декабря 2011

Хотите узнать конкретное устройство? Или вам нужен список всех подключенных устройств? Второе, я не думаю, возможно.

EDIT

Обнаружение определенных устройств:
Использование UDP Broadcast. Некоторая ссылка может быть найдена здесь !

Существуют некоторые протоколы, которые поддерживаются некоторыми устройствами (маршрутизаторы, жесткие диски и т. Д.), Например UPNP !

Если вы разрабатываете на устройстве программное обеспечение, которое вы хотели бы обнаружить, вы можете создать сервер UDP, прослушивающий определенный порт. Ваш клиент просто отправит сообщение broadcast на этот порт, а ваш Server отправит ответ с необходимой вам информацией. Здесь это простой пример.

...