Как получить несколько ответов от UDP-трансляции - PullRequest
0 голосов
/ 27 июня 2018

У меня есть случай, когда мне нужно отправить широковещательный запрос UDP в Wi-Fi на определенный порт, и конкретные устройства, которым я звоню, должны вернуть некоторую информацию, чтобы я мог определить, сколько их в этой сети. Пока у меня есть это:

public class UDP extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        String text = "";
        int server_port = 7432;
        DatagramPacket receivePacket = null;
        DatagramSocket clientSocket = null;
        try {
            clientSocket = new DatagramSocket();
            clientSocket.setSoTimeout(5);
            InetAddress IPAddress = InetAddress.getByName("255.255.255.255");
            byte[] sendData = ("02904").getBytes();
            byte[] receiveData = new byte[12];
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, server_port);
            clientSocket.send(sendPacket);
            receivePacket = new DatagramPacket(receiveData, receiveData.length);
            clientSocket.receive(receivePacket);
            Log.e("Receiving response", "Response");
            text = new String(receivePacket.getData());
            clientSocket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (SocketException e) {
            Log.e("Receiving response", "Response");
            assert receivePacket != null;
            text = new String(receivePacket.getData());
            clientSocket.close();
        } catch (IOException e) {
            Log.e("Receiving response", "Response");
            assert receivePacket != null;
            text = new String(receivePacket.getData());
            clientSocket.close();
        }
        return text;
    }

    @Override
    protected void onPostExecute(String s) {
        Log.e("Socket response", s);
    }
}

Тестирование с 1 устройством в сети возвращает странные треугольники с вопросительными знаками в них (я не уверен, но думаю, что-то с кодировкой), но моя настоящая проблема заключается в том, что я не знаю, как получить список, например, и заполнить это со всеми устройствами, которые ответили. Как получить каждый ответ и сохранить его как другой ответ, чтобы я мог их проанализировать? Все, что я знаю по запросу, находится в коде. Ответ будет byte[] с размером 12 и информацией об устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...