java核心学习(三十五) 网络编程---代理服务器

Posted The_shy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java核心学习(三十五) 网络编程---代理服务器相关的知识,希望对你有一定的参考价值。

 

一、代理服务器的功能

  1、突破自身IP限制,对外隐藏自身IP地址,访问受限站点。

  2、提高访问速度,代理服务器相当于一层缓存。

二、直接使用Proxy创建连接

  Proxy有一个构造器为:Proxy(Proxy.Type type,SocketAddress sa),用于创建表示代理服务器的Proxy对象,其中sa参数指定代理服务器的地址,type代表该代理服务器的类型,是一个枚举对象,type有三种:

    Proxy.Type.DIRECT:直接连接,不用代理

    Proxy.Type.HTTP:表示支持高级协议代理,如FTP、HTTP

    Proxy.Type.SOCKS:表示SOCKS(V4或V5)代理

  然后在创建URLConnection时或者Socket时传入该Proxy对象即可。

三、使用ProxySelector自动选择代理服务器

    使用Proxy类时,每次创建连接时需要手动指定代理服务器,而使用ProxySelector类则可以指定所有的网络请求的代理服务器,ProxySelector代表一个代理选择器,它是一个抽象类,程序可以通过继承它来实现自己的代理选择器,需要实现下面两个抽象方法:

    List<Proxy> select(URI uri) :根据业务需要返回代理服务器列表。

    connectFailed(URI uri,SocketAddress sa,IOException ioe) :连接代理服务器失败时回调此方法。

  实现了自己的代理选择器后,在程序中调用ProxySelector的静态方法setDefault()注册该代理选择器即可。

  调用ProxySelector的静态方法getDefault()可以获取sun.net.spi.DefaultProxySelector的实例,这是默认的代理选择器,关于它的用法不再赘述,用时即查。

 

以上是关于java核心学习(三十五) 网络编程---代理服务器的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之旅(三十五)

深度学习核心技术精讲100篇(三十五)-美团餐饮娱乐知识图谱——美团大脑揭秘

“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

JMeter学习(三十五)使用jmeter来发送json/gzip格式数据

Java经典编程题50道之三十五

我的QT Creator学习笔记(三十五)——网络编程之UDP与TCP