因此,我在我的手機(HTC Legend)上以測試模式測試我的Android遊戲。我正在嘗試與我的自定義JAVA服務器進行通信。我可以在我的服務器上接收UDP包,我可以看到它們,但服務器的任何響應都不會到達電話。 我使用下面的代碼我的服務器上獲取客戶端IP:端口Android UDP通過3G或WiFi在手機上接收
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測試用一個電話)?
P.S. 我知道HTC Legend有wifi問題,這就是爲什麼我使用3G .....
正如我在我的問題所述,不能真正使用wifi,因爲已知的HTC wifi問題......但必須有一種方法...它不像使用udp協議不會使用NAT ... – klo