Android局域网wifi连接

Android局域网wifi连接,android,http,networking,httpurlconnection,Android,Http,Networking,Httpurlconnection,这可能是一个设计问题,但我还是想知道 示例:我在安卓设备/手机上有一个数据连接,也有一个到本地网络的wifi连接。我想访问本地网络上的设备B 如果:我的本地网络网关已连接到外部世界我的android设备可以访问设备B。外部连接工作正常 如果:我的本地网络网关没有与外部世界的连接,我的android设备无法访问设备B。外部连接工作正常 deviceB本例中是一个本地Web服务器http://{localipaddress} 编辑: 局域网IP范围10.1.1/ 设备地址:10.1.1.154 an

这可能是一个设计问题,但我还是想知道

示例:我在安卓设备/手机上有一个数据连接,也有一个到本地网络的wifi连接。我想访问本地网络上的设备B

如果:我的本地网络网关已连接到外部世界我的android设备可以访问设备B。外部连接工作正常

如果:我的本地网络网关没有与外部世界的连接,我的android设备无法访问设备B。外部连接工作正常

deviceB本例中是一个本地Web服务器http://{localipaddress}

编辑:

局域网IP范围10.1.1/

设备地址:10.1.1.154

android wifi地址:10.1.1.111

我也尝试过在我的android手机上简单地使用浏览器(chrome),结果也是一样的

12-04 16:46:54.370 30997-31204/com.linuxjet.apps.agave D/isReachable: Connection to 10.1.1.154 failed
12-04 16:46:54.371 30997-31204/com.linuxjet.apps.agave W/System.err: java.net.SocketTimeoutException
12-04 16:46:54.392 30997-31204/com.linuxjet.apps.agave W/System.err:     at java.net.PlainSocketImpl.read(PlainSocketImpl.java:484)
12-04 16:46:54.392 30997-31204/com.linuxjet.apps.agave W/System.err:     at java.net.PlainSocketImpl.-wrap0(PlainSocketImpl.java)
12-04 16:46:54.392 30997-31204/com.linuxjet.apps.agave W/System.err:     at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
12-04 16:46:54.392 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.okio.Okio$2.read(Okio.java:135)
12-04 16:46:54.392 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
12-04 16:46:54.392 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:300)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:191)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:904)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:788)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaders(HttpURLConnectionImpl.java:150)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:194)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at java.net.URLConnection.getContentType(URLConnection.java:325)
12-04 16:46:54.393 30997-31204/com.linuxjet.apps.agave W/System.err:     at java.net.URLConnection.getContent(URLConnection.java:193)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.linuxjet.apps.agave.Tools.isReachable(Tools.java:299)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.linuxjet.apps.agave.services.ConnectionService.rebuildISY(ConnectionService.java:107)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at com.linuxjet.apps.agave.services.ConnectionService.onHandleIntent(ConnectionService.java:91)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at android.os.Looper.loop(Looper.java:148)
12-04 16:46:54.394 30997-31204/com.linuxjet.apps.agave W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
以下是我用来测试连接的代码:

public static boolean isReachable(String host, int port, int timeout, Boolean ssl) {
    URL url = null;
    try {
      url = new URL((ssl ? "https://" : "http://") + host+":"+port);
        //open a connection to that source
      HttpsURLConnection.setDefaultHostnameVerifier(new NullHostNameVerifier());
      HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection();
      if (ssl) {
        TrustAllSSLSocketFactory sslfactory;
        try {
          sslfactory = new TrustAllSSLSocketFactory();
          ((HttpsURLConnection) urlConnect).setSSLSocketFactory(sslfactory);
        } catch (KeyManagementException e) {
          e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
          e.printStackTrace();
        } catch (KeyStoreException e) {
          e.printStackTrace();
        } catch (UnrecoverableKeyException e) {
          e.printStackTrace();
        }
      }
      urlConnect.setReadTimeout(timeout);
      urlConnect.setConnectTimeout(timeout);
      urlConnect.setRequestMethod("GET");
      urlConnect.setDoInput(true);
      urlConnect.connect();
      urlConnect.getContent();
      urlConnect.disconnect();
      Log.d("isReachable","Connection to " + url.getHost() + " succeeded");
      return true;
      //trying to retrieve data from the source. If there
      //is no connection, this line will fail
    } catch (IOException e) {
      Log.d("isReachable", "Connection to " + url.getHost() + " failed");
      return false;
    }
  }

您应该准确地说出您使用的ip地址。那么,您对参数host使用了什么?“结果相同”。但结果如何?您没有告诉您收到的消息/错误/异常。使用其他信息更新您有一个SocketTimeoutException。你说Chrome也有同样的效果。但是是吗?您是否使用10.1.1.154作为参数主机?我以前问过这个问题。你不需要用明显的回答。我知道我遇到了超时异常。我想知道为什么只有当我的网关与外界没有联系时才会发生这种情况。是的,10.1.1.154始终是本次对话特定目的的预定主持人。