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