Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序套接字创建(用于主机可访问性)无限期等待,而Web应用程序通过系统代理连接时工作正常_Android_Sockets_Networking_Proxy - Fatal编程技术网

Android应用程序套接字创建(用于主机可访问性)无限期等待,而Web应用程序通过系统代理连接时工作正常

Android应用程序套接字创建(用于主机可访问性)无限期等待,而Web应用程序通过系统代理连接时工作正常,android,sockets,networking,proxy,Android,Sockets,Networking,Proxy,在受限网络上工作时,我面临着一个棘手的情况。虽然我已将系统代理设置为连接到Web服务器,但以下是从Web浏览器和Android Sockets中观察到的两种不同行为。 1) 有了代理设置,Web浏览器对我的服务器URL(主机:端口)的请求进行得很顺利,我从服务器获得了200 OK,并获得了有效的响应数据 2) 使用Android应用程序,我会在请求连接之前检查主机可达性。在主机到达能力检查中,我创建了一个 Java.NETSocket ,如果它没有任何异常返回,我认为我的主机是可访问的。代码片

在受限网络上工作时,我面临着一个棘手的情况。虽然我已将系统代理设置为连接到Web服务器,但以下是从Web浏览器和Android Sockets中观察到的两种不同行为。

1) 有了代理设置,Web浏览器对我的服务器URL(主机:端口)的请求进行得很顺利,我从服务器获得了200 OK,并获得了有效的响应数据

2) 使用Android应用程序,我会在请求连接之前检查主机可达性。在主机到达能力检查中,我创建了一个<强> Java.NETSocket ,如果它没有任何异常返回,我认为我的主机是可访问的。代码片段的PSB

public static boolean isHostReachable(String hostname, int port) {
    boolean isReachable = false;

    Socket socket = null;
    try {
      socket = new Socket(hostname, port);
      isReachable = true;
    } catch (Exception e) {
      .....
    } finally {
      ....
    }

  return isReachable;
}
当在不受限制的网络(比如我的家庭网络)中工作时,主机可达性检查的整个逻辑工作正常

问题出现在主机可达性套接字调用中,当我从受限网络运行我的应用程序时(将代理设置为访问我的服务器)。这里我的套接字创建调用没有返回,导致主机访问能力失败

在受限网络中,浏览器和我的应用程序行为之间存在明显差异

我的问题:虽然Web应用程序运行良好,Android上的上述套接字创建失败导致我的主机在受限网络中无法访问(在系统首选项中设置了代理)的原因是什么?我有什么建议可以克服这个问题吗