1

ブロードキャスト アドレス (192.168.1.255) を使用して UDP パケットを送信すると、UDP パケットを送受信できるという奇妙な問題があります。ユニキャスト アドレス (192.168.1.83) で送信すると、パケットは送信されません (Wireshark で確認しました)。

送信機能は次のとおりです。

    private void sendPacket(String data) {
        try {
            if (mSocket.isClosed()) {
                Log.e(TAG, "Socket is closed: " + data);
                return;
            }
            Log.d(TAG, "Send: " + data + " - " + myLocalIP.toString()+ " - " + myBcastIP.toString());
            DatagramPacket packet = new DatagramPacket(data.getBytes(),
                    data.length(), myLocalIP, BCAST_PORT);

            mSocket.send(packet);
        } catch (Exception e) {
            Log.e(TAG, "Exception during write", e);
        }
    }

私のmanefestファイルには次の権限があります:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

ブロードキャストが機能していることを考えると、自分が何を間違っているのか考えられません。アイデアはありますか?

4

1 に答える 1

2

別のポートで試しましたか?このメソッドを数回ループする可能性があります。UDP はパケットの 100% の配信を保証しません。

socket.setBroadcast(true)ブロードキャスト メッセージを送信するために、コードのどこかで使用していますか?

于 2012-11-29T09:06:15.833 に答える