深刻な頭痛の種となる小さな問題があります。
私はUDP通信用に2つの小さなプログラムを作成しました(それぞれが送受信します)。
これまでのテスト:-PC
はパケットを送信して受信します。
-Androidはパケットを送信して受信します。
同じネットワーク内の2台のPC間で別のテストを行った後、
それら2台でさえ互いに通信していないようです。
Androidデバイスに使用されるJavaコードは、主
にAndroidクラスタリング用に作成した(動作中の)プログラムから採用されました(したがって、正しいと思います)。
誰かがそれについて何か考えを持っていますか(またはそれはファイアウォール関連の問題でさえあるかもしれません)?
一部のコード(重要な部分のみ、リストの監視と管理を取り除いた例)
初期化:
private UdpClient udpClient;
private static int udpPort=9998;
private IPAddress mCastAddress = IPAddress.Parse("239.255.255.255");
Ctorの場合:
udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = true;
udpClient.AllowNatTraversal(true);
udpClient.JoinMulticastGroup(mCastAddress);
送信者スレッド:
IPEndPoint iep = new IPEndPoint(mCastAddress, udpPort);
//MessageCoder.encode(msg) is returning a valid byte[], no problem here.
byte[] data=MessageCoder.encode(msg);
udpClient.Send(data, data.Length, iep);
レシーバースレッド:
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref iep);
前もって感謝します。
[編集] Androidデバイスが
私のPCからもパッケージ
を受信していないようです。
[/編集]