`
- 浏览:
444492 次
- 性别:
- 来自:
苏州
-
- package com.kuaff.jdk5package;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.InetSocketAddress;
- import java.net.MalformedURLException;
- import java.net.Proxy;
- import java.net.ProxySelector;
- import java.net.SocketAddress;
- import java.net.URI;
- import java.net.URISyntaxException;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.List;
- import java.util.Properties;
- public class NetProxy
- {
- // 测试本地JVM的网络缺省配置
- public void setLocalProxy()
- {
- Properties prop = System.getProperties();
- //设置http访问要使用的代理服务器的地址
- prop.setProperty("http.proxyHost", "10.10.0.96");
- //设置http访问要使用的代理服务器的端口
- prop.setProperty("http.proxyPort", "8080");
- //设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
- prop.setProperty("http.nonProxyHosts", "localhost|10.10.*");
- //设置安全访问使用的代理服务器地址与端口
- //它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
- prop.setProperty("https.proxyHost", "10.10.0.96");
- prop.setProperty("https.proxyPort", "443");
- //使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
- prop.setProperty("ftp.proxyHost", "10.10.0.96");
- prop.setProperty("ftp.proxyPort", "2121");
- prop.setProperty("ftp.nonProxyHosts", "localhost|10.10.*");
- //socks代理服务器的地址与端口
- prop.setProperty("socksProxyHost", "10.10.0.96");
- prop.setProperty("socksProxyPort", "1080");
- }
- // 清除proxy设置
- public void removeLocalProxy()
- {
- Properties prop = System.getProperties();
- prop.remove("http.proxyHost");
- prop.remove("http.proxyPort");
- prop.remove("http.nonProxyHosts");
- prop.remove("https.proxyHost");
- prop.remove("https.proxyPort");
- prop.remove("ftp.proxyHost");
- prop.remove("ftp.proxyPort");
- prop.remove("ftp.nonProxyHosts");
- prop.remove("socksProxyHost");
- prop.remove("socksProxyPort");
- }
- //
- // 测试http
- public void showHttpProxy(Object... proxy)
- {
- URL url = null;
- try
- {
- url = new URL("http://blog.csdn.com/smallnest");
- }
- catch (MalformedURLException e)
- {
- return;
- }
- try
- {
- URLConnection conn = null;
- switch (proxy.length)
- {
- case 0:
- conn = url.openConnection();
- break;
- case 1:
- conn = url.openConnection((Proxy) proxy[0]);
- break;
- default:
- break;
- }
- if (conn == null)
- return;
- conn.setConnectTimeout(3000); // 设置连接超时时间
- InputStream in = conn.getInputStream();
- byte[] b = new byte[1024];
- try
- {
- while (in.read(b) > 0)
- {
- System.out.println(new String(b));
- }
- }
- catch (IOException e1)
- {
- }
- }
- catch (IOException e1)
- {
- e1.printStackTrace();
- }
- }
- // 测试ftp
- public void showFtpProxy(Object... proxy)
- {
- URL url = null;
- try
- {
- url = new URL("ftp://ftp.tsinghua.edu.cn");
- }
- catch (MalformedURLException e)
- {
- return;
- }
- try
- {
- URLConnection conn = null;
- switch (proxy.length)
- {
- case 0:
- conn = url.openConnection();
- break;
- case 1:
- conn = url.openConnection((Proxy) proxy[0]);
- break;
- default:
- break;
- }
- if (conn == null)
- return;
- conn.setConnectTimeout(3000); // 设置连接超时时间
- InputStream in = conn.getInputStream();
- byte[] b = new byte[1024];
- try
- {
- while (in.read(b) > 0)
- {
- System.out.println(new String(b));
- }
- }
- catch (IOException e1)
- {
- }
- }
- catch (IOException e1)
- {
- e1.printStackTrace();
- }
- }
- // 得到一个proxy
- public Proxy getProxy(Proxy.Type type, String host, int port)
- {
- SocketAddress addr = new InetSocketAddress(host,port);
- Proxy typeProxy = new Proxy(type, addr);
- return typeProxy;
- }
- public static void main(String[] args)
- {
- NetProxy proxy = new NetProxy();
- //测试代理服务器
- proxy.setLocalProxy();
- proxy.showHttpProxy();
- //下面两行是清除系统属性,而通过Proxy类指定代理服务器
- // proxy.removeLocalProxy
- //proxy.showHttpProxy(proxy.getProxy(Proxy.Type.SOCKS,"10.10.0.96",1080));
-
-
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Java中,代理模式有静态代理和动态代理两种实现方式。本篇将重点讨论"动态代理",这是一种在运行时创建代理对象的技术,使得我们可以在程序运行过程中,根据需要动态地生成具有额外功能的代理类。 动态代理主要由...
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...
多线程代理IP池,一直看到有关这方面的技术,最近实现了一个。简单的来说,启动后,会一直定时的获取代理ip,并自动检测代理ip的活跃度。运用多线程的技术,在极短的时间内获取大量的ip进行筛选。架构也比较清楚,...
使用Java编写的反向代理程序(源代码),通过简单的参数配置即可实现某些特定站点的反向代理,并在此过程中改变一些站点的特定行为。例如:允许特点站点跨域访问被代理的站点,或者屏蔽被代理站点识别请求访问客户端...
而Cglib则不需要目标对象实现接口,通过继承目标类实现代理,因此适用于没有接口或不希望修改原有代码的情况。不过,Cglib生成代理类的速度比JDK慢,且内存占用稍高。 总结来说,Java动态代理为开发者提供了灵活的...
在本文中,我们将通过一个简单的例子来展示如何使用Java动态代理实现AOP。首先,我们定义了一个business接口和一个实现类BusinessObject,BusinessObject中包含了商业逻辑代码和日志记录代码。 ```java public ...
在深入探讨Java动态代理的实现过程之前,我们首先需要理解动态代理的基本概念及其在Java中的应用价值。动态代理,顾名思义,是在运行时动态创建代理对象的一种机制,它无需在编译期就确定代理类的具体实现,而是通过...
在Java中实现代理服务器,我们可以利用Java的Socket编程接口。`HttpProxy.java` 和 `SubHttpProxy.java` 这两个文件很可能包含了代理服务器的核心代码。`HttpProxy.java` 可能是主程序,负责监听客户端的HTTP请求并...
Java中的动态代理主要有两种实现方式:JDK动态代理和CGLIB动态代理。 1. **JDK动态代理**: JDK动态代理是基于接口的,它通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。...
Java 实现的代理服务器是一种网络通信工具,它允许客户端通过该服务器作为中介与目标服务器进行交互,从而隐藏了客户端的真实身份或提供了额外的安全性。在本项目中,我们主要关注的是实现了 SOCKS4 和 SOCKS5 协议...
### Java动态代理实现AOP详解 #### 一、引言 随着软件开发复杂度的提升,传统的面向对象编程(OOP)已经...总之,通过本篇文章的学习,读者应该能够理解和掌握如何使用Java动态代理来实现AOP的基本原理及实践操作。
在Java中,可以使用`java.net.Socket`类实现FTP代理,同时,`org.apache.commons.net.ftp.FTPClient`库提供了一个强大的FTP客户端实现,可以方便地处理各种FTP操作。 **Telnet代理** Telnet是一种远程登录协议,...
下面我们将详细探讨如何使用Java动态代理实现委托模式,以及相关的源码和工具应用。 首先,理解委托模式的基本概念。委托模式通常由三部分组成:委托者(Delegate)、被委托者(Subject)和客户端(Client)。委托...
Java 动态代理是Java平台提供的一种强大的工具,它允许我们在运行时动态生成代理类,这些代理类可以实现一组指定的接口,同时还能在方法调用前后添加自定义的行为。这种机制大大简化了面向切面编程(AOP)和事件监听...
Java动态代理主要用于创建代理对象,这些代理对象可以实现在特定时刻的行为增强。 **1. Java动态代理类的位置** Java动态代理类位于`java.lang.reflect`包下,主要包括`InvocationHandler`接口和`Proxy`类。 **2....
在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。 **AOP概述** 面向切面编程(Aspect Oriented Programming,AOP)是一种编程范式,旨在将横切关注点...
这个"java操作IE代理"的主题涉及到如何在Java程序中控制IE的网络代理设置,这通常需要利用特定的库和方法来实现。下面将详细介绍这个知识点。 首先,"registry.jar"可能是一个包含了对Windows注册表操作功能的Java...
使用Java编写的反向代理程序,通过简单的参数配置即可实现某些特定站点的反向代理,并在此过程中改变一些站点的特定行为。例如:允许特点站点跨域访问被代理的站点,或者屏蔽被代理站点识别请求访问客户端的类型...