我在Android手机中开发了一个名为“A”的套接字服务器。并在另一个名为“B”的Android手机中部署套接字客户端。
手机套接字服务器。 手机B代理套接字客户端。 PC Server C作为套接字服务器,接收带有ip信息的电话“A”请求,并将“A”的IP发送到电话“B”。
现在,我已在局域网中成功将“B”连接到“A”。 另外,我想在3G网络中将“B”连接到“A”。
首先,我启动Socket Server C.并听电话A和电话B.
第二步,启动电话B,然后连接到服务器C.这样服务器C就可以通过连接的套接字与电话B进行通信。
第三步,启动手机A,然后连接到服务器C.这样服务器C就可以通过连接的套接字与手机A进行通信。
虽然第一个和第二个,但是电话B可以与电话A互相通信。
然而,我想加快手机B和手机A之间的转移,减轻服务器C的压力。我只是使用PC Server C将手机A的ip发送到手机B. 然后,电话B连接到电话A使用从服务器C收到的IP。获取ip: 对于wifi网络:
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ip = (ipAddress & 0xFF)+ "." + ((ipAddress >> 8 ) & 0xFF)+ "." + ((ipAddress >> 16 ) & 0xFF) +"."+((ipAddress >> 24 ) & 0xFF);
Log.d(TAG, " wifi net , ip: "+ip);
return ip;
用于3G网络:
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()) {
String ip = inetAddress.getHostAddress().toString();
Log.d(TAG, " mobile net , ip: "+ip);
return ip;
}
}
}
但网络成功,3G网络失败。
我想可能有关于网络机制的事情。 您能否尽可能地解释它并提供任何其他解决方案来连接3G网络中的两部手机? 非常感谢。