Java 如何从UDP广播接收多个响应

Java 如何从UDP广播接收多个响应,java,android,sockets,udp,Java,Android,Sockets,Udp,我有一个案例,我需要在特定端口上的wifi中发送广播和UDP请求,我正在呼叫的特定设备应返回一些信息,以便我可以确定它们在该网络中的数量。 到目前为止,我有: public class UDP extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { String text = ""; int s

我有一个案例,我需要在特定端口上的wifi中发送广播和UDP请求,我正在呼叫的特定设备应返回一些信息,以便我可以确定它们在该网络中的数量。 到目前为止,我有:

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);
    }
}
公共类UDP扩展异步任务{ @凌驾 受保护的字符串背景(无效…无效){ 字符串文本=”; int服务器_端口=7432; DatagramPacket receivePacket=null; DatagramSocket clientSocket=null; 试一试{ clientSocket=newdatagramsocket(); clientSocket.setSoTimeout(5); InetAddress IPAddress=InetAddress.getByName(“255.255.255.255”); 字节[]sendData=(“02904”).getBytes(); 字节[]接收数据=新字节[12]; DatagramPacket sendPacket=新的DatagramPacket(sendData、sendData.length、IPAddress、服务器端口); clientSocket.send(sendPacket); receivePacket=新数据包(receiveData,receiveData.length); clientSocket.receive(receivePacket); Log.e(“接收响应”、“响应”); text=新字符串(receivePacket.getData()); clientSocket.close(); }捕获(未知后异常e){ e、 printStackTrace(); }捕获(SocketException e){ Log.e(“接收响应”、“响应”); assert receivePacket!=null; text=新字符串(receivePacket.getData()); clientSocket.close(); }捕获(IOE异常){ Log.e(“接收响应”、“响应”); assert receivePacket!=null; text=新字符串(receivePacket.getData()); clientSocket.close(); } 返回文本; } @凌驾 受保护的void onPostExecute(字符串s){ Log.e(“套接字响应”,s); } } 使用网络中的一台设备进行测试会返回带有问号的奇怪三角形(我不确定,但我猜可能是编码问题),但我的实际问题是,我不知道如何获取一个列表,例如,并用所有响应的设备填充它。如何获取每个响应并将其另存为不同的响应,以便我可以解析它们? 我知道的所有请求都在代码中。响应将是
字节[]
,其中12为大小和设备特定信息