所以,我正在调试模式下在我的手机(HTC Legend)上测试我的安卓游戏。我正在尝试与我的自定义 JAVA 服务器通信。我可以在我的服务器上接收 UDP 包,我可以看到它们,但是来自服务器的响应都没有到达电话。我在我的服务器上使用以下代码来获取客户端 IP:端口
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;
}
在测试中,我可以看到这两个地址是不同的。也许有问题?
我在客户端使用了标准的 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有wifi问题,这就是我使用3G的原因......