3

我在 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 网络中连接?非常感谢。

4

0 回答 0