如何让android手机成为套接字服务器?

时间:2012-12-10 07:45:32

标签: android serversocket

我在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网络中的两部手机? 非常感谢。

0 个答案:

没有答案