`
yeshaoting
  • 浏览: 666922 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[JAVA实时屏幕监控]Java使用代理服务器

    博客分类:
  • J2SE
 
阅读更多

 

/**
 * Copyright (c) 2012 Trusted Software and Mobile Computing(TSMC)
 * All right reserved.
 *
 * Created on Apr 24, 2012 12:42:24 PM
 * http://jarg.iteye.com/
 * Author: Jarg Yee <yeshaoting@gmail.com>
 */
package com.iteye.jarg.monitor.test;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;

/**
 * TODO 使用代理服务器工具类
 */
public class ProxyUtil
{
	/** 代理服务器IP地址 e.g. 10.10.0.96 */
	private static final String IP = "10.10.0.96";
	
	/** 初始化代理 */
	public static void initProxy()
	{
		Properties prop = System.getProperties();
		
		// 设置http访问要使用的代理服务器的地址
		prop.setProperty("http.proxyHost", IP);
		// 设置http访问要使用的代理服务器的端口
		prop.setProperty("http.proxyPort", "808");
		// 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
		prop.setProperty("http.nonProxyHosts", "localhost|10.10.*");

		// 设置安全访问使用的代理服务器地址与端口
		// 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
		prop.setProperty("https.proxyHost", IP);
		prop.setProperty("https.proxyPort", "443");

		// 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
		prop.setProperty("ftp.proxyHost", IP);
		prop.setProperty("ftp.proxyPort", "2121");
		prop.setProperty("ftp.nonProxyHosts", "localhost|10.10.*");

		// socks代理服务器的地址与端口
		prop.setProperty("socksProxyHost", IP);
		prop.setProperty("socksProxyPort", "1080");
	}
	
	/**
	 * 使用代理
	 * */
	private static void testProxy() throws IOException
	{
		/** 使用代理连接网络 */
		URL url = new URL("http://www.baidu.com/");
		URLConnection conn = url.openConnection();
		conn.setConnectTimeout(3000);
		
		InputStream in = conn.getInputStream();
		BufferedInputStream bin = new BufferedInputStream(in);
		byte[] buf = new byte[1024];	// 缓存连网获得的数据
		while(bin.read(buf) > 0)
		{
			System.out.print(new String(buf, "GBK"));
		}
		System.out.println();
	}
	
	/** for debugging. 
	 * @throws IOException */
	public static void main(String[] args) throws IOException
	{
		initProxy();	// 初始化代理
		testProxy();		// 使用代理
	}
}
 

 

分享到:
评论
4 楼 yeshaoting 2012-05-03  
美丽的小岛 写道
yeshaoting 写道
美丽的小岛 写道
师兄呀,没有发现在哪里用了代理呀。是不是60行的URLConnection conn = url.openConnection();中的openConnection()方法用应该openConnection(Proxy proxy)这个方法呀?

不是.60行这是以C/S方式联接网络,与使用代理并没有直接关系.
这里使用代理的意思是,通过代理上网.

在一台没有联网的电脑环境中,程序可以通过先设置远方代理服务器的方式来连接网络,就好像IE这个程序通过在Internet选项中设置代理服务器IP地址及端口号来访问互联网一个道理.

不知道我有没有讲明白.好像很难讲.

是不可以这样理解,这里有三个层次,最高就是testProxy()这个函数的应用程序,下一层是initProxy()函数初始化的jvm环境下的联网的设置。这个jvm环境下再去找代理联网,这个为第三层,采用代理与外界通信,也即是通过代理去向服务器提交请求并把结果返回来。

你可以这样去理解,一般这里没有必要牵扯到JVM.
3 楼 美丽的小岛 2012-05-03  
yeshaoting 写道
美丽的小岛 写道
师兄呀,没有发现在哪里用了代理呀。是不是60行的URLConnection conn = url.openConnection();中的openConnection()方法用应该openConnection(Proxy proxy)这个方法呀?

不是.60行这是以C/S方式联接网络,与使用代理并没有直接关系.
这里使用代理的意思是,通过代理上网.

在一台没有联网的电脑环境中,程序可以通过先设置远方代理服务器的方式来连接网络,就好像IE这个程序通过在Internet选项中设置代理服务器IP地址及端口号来访问互联网一个道理.

不知道我有没有讲明白.好像很难讲.

是不可以这样理解,这里有三个层次,最高就是testProxy()这个函数的应用程序,下一层是initProxy()函数初始化的jvm环境下的联网的设置。这个jvm环境下再去找代理联网,这个为第三层,采用代理与外界通信,也即是通过代理去向服务器提交请求并把结果返回来。
2 楼 yeshaoting 2012-05-02  
美丽的小岛 写道
师兄呀,没有发现在哪里用了代理呀。是不是60行的URLConnection conn = url.openConnection();中的openConnection()方法用应该openConnection(Proxy proxy)这个方法呀?

不是.60行这是以C/S方式联接网络,与使用代理并没有直接关系.
这里使用代理的意思是,通过代理上网.

在一台没有联网的电脑环境中,程序可以通过先设置远方代理服务器的方式来连接网络,就好像IE这个程序通过在Internet选项中设置代理服务器IP地址及端口号来访问互联网一个道理.

不知道我有没有讲明白.好像很难讲.
1 楼 美丽的小岛 2012-05-02  
师兄呀,没有发现在哪里用了代理呀。是不是60行的URLConnection conn = url.openConnection();中的openConnection()方法用应该openConnection(Proxy proxy)这个方法呀?

相关推荐

Global site tag (gtag.js) - Google Analytics