我在 android 手机中开发了一个名为“A”的套接字服务器。并在另一部名为“B”的安卓手机中部署一个套接字客户端。
phone 一个行为套接字服务器。电话 B 充当套接字客户端。PC 服务器 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服务器C将手机A的ip发送给手机B。然后,手机B连接到手机A使用该ip从服务器 C 接收。
获取 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 网络中连接?非常感谢。