Android 手机无法接收来自其他设备或 IOS 的 UDP 广播

时间:2021-07-06 11:48:02

标签: android sockets udp

我有 4 部安卓手机(Pixel、Samsung、HTC),我试图向其他手机发送 UDP 广播,成功了,其他手机会同时收到消息。

但是当IOS发送广播时,我的android无法收到他们的任何消息,但他们可以收到我的消息。

请帮忙。

这是我的代码。

UDP 服务器:

try {

            socket = new DatagramSocket(8082);

            socket.setBroadcast(true);
            tvUdpServer.setText("UDP SERVER  PORT : 8082");
            tvMsg.setText(rcvMsg);
            while (true){
                byte[] revcBuf = new byte[15000];
                DatagramPacket packet = new DatagramPacket(revcBuf,revcBuf.length);

                socket.receive(packet);

                String data = new String(packet.getData()).trim();

                if (rcvMsg.isEmpty()){
                    rcvMsg = "receive message : "+data;
                }else {
                    rcvMsg = rcvMsg + "\nreceive message : "+data;
                }


                showData(rcvMsg);
                Log.i("Michael","receive message : "+data);
            }


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

UDP 客户端:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    try {
        //Open a random port to send the package
        DatagramSocket socket = new DatagramSocket();
        socket.setBroadcast(true);
        byte[] sendData = messageStr.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, getBroadcastAddress(context), Config.PORT);
        socket.send(sendPacket);
        Log.i(Config.TAG, "Broadcast packet sent to: " + getBroadcastAddress(context).getHostAddress());
    } catch (IOException e) {
        Log.e(Config.TAG, "IOException: " + e.getMessage());
    }

0 个答案:

没有答案