0

深刻な頭痛の種となる小さな問題があります。
私は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からもパッケージ
を受信して​​いないようです。 [/編集]


4

1 に答える 1

0

さて、私はPC <-> PCの問題の解決策を見つけました:

Ctorの場合:

udpClient = new UdpClient(udpPort);
udpClient.MulticastLoopback = true;
udpClient.EnableBroadcast = true;
udpClient.JoinMulticastGroup(mCastAddress);

送信者スレッド:

 IPEndPoint iep = iep = new IPEndPoint(IPAddress.Broadcast, udpPort); 

レシーバースレッド:

IPEndPoint iep = new IPEndPoint(IPAddress.Any,udpPort);

時々それは小さなことです...

それでは、Androidデバイスとの相互運用を試してみましょう。

于 2012-08-10T07:33:43.053 に答える