запрос на обнаружение сети - PullRequest
0 голосов
/ 10 ноября 2018

Мне нужно отправить запрос с устройства, которое находит определенные устройства в текущей сети (Wi-Fi), в которых уже реализован клиент. Мне нужно получить IP-адреса всех таких устройств. Пока у меня есть это:

protected Void doInBackground(Void... voids) {

            DatagramSocket socket = null;
            try {
                socket = new DatagramSocket(7432);
                byte[] msg = new byte[]{0,2,9,0,4};
                Log.d("sending", "Sending data " + Arrays.toString(msg));

                DatagramPacket packet = new DatagramPacket(msg, msg.length,
                        InetAddress.getByName("192.168.1.255"), 7432);
                socket.send(packet);
                socket.setBroadcast(true);
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            byte[] buf = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buf, buf.length);
            try {
                while (true) {
                    if (socket != null){
                        socket.receive(packet);
                    }
                    String s = String.valueOf(packet.getAddress());
                    Log.e("response", "Received response " + s);
                }
            } catch (SocketTimeoutException e) {
                Log.d("timeout", "Receive timed out");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

Я также пытался с 255.255.255.255, и я получаю эту ошибку: E/adbd: failed to connect to socket 'localabstract:com.example.fixxxer.skyzapper': Connection refused Я даже не уверен, что код, который у меня есть, в порядке, но на удивление нет адекватной информации в сети, и, как только я попробовал, тоже не работает. Я застрял на некоторое время над этой проблемой.

...