Отправка пакета DatagramPacket в android, но ничего не происходит - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь создать пакет с помощью DatagramPacket, а затем отправить его с помощью DatagramSocket и получить ответ с удаленного сервера.

после запуска этого кода на моем MainActivity через мое устройство я просто получить пустую страницу, похоже, она "зависла" при попытке получить ответ от сервера, но ничего не происходит:

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ByteArrayOutputStream message = null;
    ByteArrayOutputStream headerStream = new ByteArrayOutputStream();
    try {
        message = new ByteArrayOutputStream();

        outputStream.write(intToByteArray(0)); // flags
        outputStream.write("08".getBytes());   // client type
        outputStream.write(intToByteArray(0)); // min version
        outputStream.write(intToByteArray(2)); // max version
        byte[] payload = outputStream.toByteArray();

        byte[] packettypeIdByte = "DD00".getBytes(); // packet type
        headerStream.write(packettypeIdByte);
        headerStream.write(intToByteArray(payload.length));
        headerStream.write(intToByteArray(0)); // version
        byte[] header = headerStream.toByteArray();

        message.write(header);
        message.write(payload);

    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        // for discover
        InetAddress ip = InetAddress.getByName("XX.XX.XX.XX");
        DatagramPacket packet = new DatagramPacket(message.toByteArray(), message.toByteArray().length);

        int port = XXXX
        DatagramSocket ds = new DatagramSocket(port);
        ds.receive(packet);
        String str = new String(packet.getData(), 0, packet.getLength());
        Log.d("pac", str);
    } catch (IOException e) {
        e.printStackTrace();
    }

есть идеи, что я делаю не так? или как правильно использовать datagramPacket и datagramSocket?

...