0

HotsportネットワークでUDPを使用してアプリケーションがデータを受信できないのはなぜですか?しかし、私のアプリケーションは通常のWi-FiネットワークでUDPを使用してデータを受信できます。送信者のコードは次のとおりです。

@Override
    public void run() {
        super.run();
        DatagramPacket dataPacket = null;

        try {
            udpSocket = new DatagramSocket(DEFAULT_PORT);

            dataPacket = new DatagramPacket(buffer, MAX_DATA_PACKET_LENGTH);
            while (isRunning) {
                String address = getLocalIPAddress();
                if (address != null) {
                    byte[] data = address.getBytes();
                    dataPacket.setData(data);
                    dataPacket.setLength(data.length);
                    dataPacket.setPort(DEFAULT_PORT);
                    InetAddress broadcastAddr;
                    broadcastAddr = InetAddress.getByName("255.255.255.255");
                    dataPacket.setAddress(broadcastAddr);
                    try {
                        Log.i(DazzleApplication.TAG,"Sending---->"+address);
                        sleep(3000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
            if (udpSocket != null)
                udpSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

受信者のコードは次のとおりです。

public void run() {
            DatagramPacket udpPacket=null;
            byte[] data=null ;
            try {
                udpSocket = new DatagramSocket(43708);
                udpSocket.setSoTimeout(3000);
                data= new byte[256];
                udpPacket= new DatagramPacket(data, 256);
            } catch (SocketException e) {
                e.printStackTrace();
                System.out.println(e.toString());
            }
            while (start) {
                System.out.println("DazzleTest Receive.....");
                try {

                    udpSocket.receive(udpPacket);
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println(e.toString());
                }

                if (udpPacket.getLength() != 0) {
                    String codeString = new String(data, 0,
                            udpPacket.getLength());
                    Message msg = new Message();
                    msg.obj = codeString;
                    mH.sendMessageDelayed(msg, 1000);
                    System.out.println("receiver--->"+codeString);
                }else{
                    System.out.println("receiver null");
                }
            }
            if (udpSocket != null) {
                udpSocket.close();
            }

        }

なんで?誰がこの事件を説明できますか?UDPはホットスポットで動作しませんか?

次の情報を更新します。ソケットの送信者は、ホットスポットで開かれているHTCHDで実行されます。例外をキャッチできます:java.net.SocketException: Network is unreachable: connect

4

1 に答える 1

0

コードが 1 つのネットワークで機能し、別のネットワークでは機能しない場合、2 番目のネットワークが DNS 以外の UDP トラフィックをほぼ確実にブロックしています。

于 2012-08-01T20:24:33.317 に答える