Windows系统接口提供的代理服务器设置是一个全局的代理服务器的设置,如图所示,这里就不多解释:
各个浏览器在使用代理设置的时候,可以主动地获取代理设置亦或是不使用该代理设置,例如Chrome浏览器如果要使用代理设置,只能在图中所示的位置进行更改,所以简单地(不使用辅助性工具)为Chrome设置代理,只能通过更改系统全局代理设置(当然此时不会影响不使用该代理设置的进程),如图:
而360浏览器可以有几种选择:
它可以使用自己程序配置的代理,使用IE的代理(应该就是系统的全局代理设置),或者不使用代理,这样它可以使用独立的代理配置(连使用系统全局代理设置的进程都不会受影响)。
Windows环境下,在java编程中,验证了自己的一个理解,代码如下:
package UserApp;
public class LocalProxyHostPrint
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
while (true)
{
System.out.println(System.getProperties().getProperty(
"http.proxyHost"));
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
该代码打印当前的代理服务器设置,结果发现,当设不设置系统的代理服务器,都不影响java的打印结果,如上代码运行结果都为null。
另外的一段java程序表明,在同一个进程下,只要这个进程用java代码设置了代理,那么进程下所有线程都使用了这个代理设置。代码如下:
线程代码:
public void run()
{
while(true)
{
System.out.println(System.getProperties().getProperty("http.proxyHost"));
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
main函数的代码:
System.getProperties().setProperty("http.proxyHost", myextractor.__v_ip.get(it));
试验过的另一个程序表明,如果进程1设置了代理之后,进程2不设置代理,且用进程2打印代理设置,此时,结果为null,这说明代理设置这个上下文是依赖于进程的,而系统的代理设置也不是属于全局覆盖性、全局强制性的设置,它的存在相当于只是把一个参数放在系统某个位置,使用该设置与否,还得具体由进程通过代码来控制。
版权声明:本文为博主原创文章,未经博主允许不得转载。
代理服务器的理解(1):Windows环境下的代理服务器设置
原文地址:http://blog.csdn.net/just_do_it_ye/article/details/47379587