最初に私の英語は申し訳ありませんが、私は「ネイティブライター」ではありません。Androidでブロードキャストメッセージを受信する
私はブロードキャストメッセージをC++で送信しており、Androidデバイスで受信したいと考えています。
System.out.println("receiveBroadcast()");
DatagramSocket socket = new DatagramSocket(3866);
socket.setBroadcast(true);
System.out.println("Listen on " + socket.getLocalAddress() + " from " + socket.getInetAddress() + " port " + socket.getBroadcast());
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while (true) {
System.out.println("Waiting for data");
socket.receive(packet);
System.out.println(packet.getAddress());
System.out.println("Data received");
}
標準のJava SEコンソールアプリケーションとしてコンパイルし、ネットワークに接続された他のコンピュータで実行すると動作します。 Android上では動作しません。理由はわかりません。 Androidではそれだけでデータを待ち、それを受けたことがない:
私は「オン/聴く::ヌルポートtrueから」ではなく、Windowsシステムの下で、標準のJavaコンソール・アプリケーションとしてそれを実行したとき、私は、面白いです何03-18 15:47:05.045: I/System.out(16651): receiveBroadcast()
03-18 15:47:05.055: I/System.out(16651): Listen on /:: from null port true
03-18 15:47:05.065: I/System.out(16651): Waiting for data
get "0.0.0.0.0.0.0.0をヌルポートから聞く"を得る。
私はマニフェスト、このような権限を持っている:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
、助けてください!
これを参照してください - http://code.google.com/p/boxeeremote/wiki/AndroidUDP。それを機能させると、将来の訪問者のためにあなた自身の質問に答えることができます。 – Shade
リンクありがとうございます。私はそれを詳細に書きましたが、残念ながら私の問題を解決するアドバイスはありません。私は無線通信を使用するさらに別のPCでこのJavaコードを試しました。確かに問題はAndroidにありますが、解決方法はまだ分かりません。 –
リンクからgetBroadcastAddressメソッドを実装しましたか?私はあなたの問題がバインドするアドレスを取得していると思います。 Androidの携帯電話には通常、WiFiとモバイルの少なくとも2つのインターフェースがあります。 – Shade