だから、デバッグモードで自分の携帯電話(HTC Legend)でAndroidゲームをテストしています。カスタム Java サーバーと通信しようとしています。サーバーでUDPパッケージを受信できます。見ることはできますが、サーバーからの応答が電話に届きません。サーバーで次のコードを使用して、クライアント IP:port を取得しています
datagramPackageIn.getAddress();
datagramPackageIn.getPort();
クライアント側では、次のコードを使用して自分のアドレスを確認します。
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(TAG, ex.toString());
}
return null;
}
テストでは、これら 2 つのアドレスが異なることがわかります。多分問題がありますか?
クライアントで標準のUDP通信コード(エミュレーターで機能するもの)を使用しました:
run(){//simplified version
while(true)
packageIN()
}
public packageIN(){
DatagramPacket packet= new DatagramPacket(inBuffer, inBuffer.length);
DatagramSocket socket= new DatagramSocket(receivingPort);
socket.receive();
}
では、有効なソリューションはありますか (3g の電話でテスト済み)?
PS HTC Legend に Wi-Fi の問題があることは知っています。そのため、私は 3G を使用しています.....