中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > JDK核心API
J2SE5.0新特性之使用代理服务器
作者:未知 时间:2005-07-24 21:14 出处:JR 责编:chinaitpower
              摘要:J2SE5.0新特性之使用代理服务器
5.0以前的代理服务器设置挺不友好,现在,5.0提供了对通过代理服务器的更加灵活的控制,
它可以对http,https,ftp,socks等分别设置,而且还可以设置不需要通过代理服务器的主机和地址。
这和我们在IE、firefox中设置代理服务器类似。

1.你可以在通过java -DXXXX=YYYY方式在程序启动时设置,你也可以在程序中将设置放入系统属性中,你也可以设置Proxy类,通过它来控制。

2.可以通过ProxySelector来做自己的代理服务器的负载平衡等。


  1. package com.kuaff.jdk5package;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.InetSocketAddress;
  5. import java.net.MalformedURLException;
  6. import java.net.Proxy;
  7. import java.net.ProxySelector;
  8. import java.net.SocketAddress;
  9. import java.net.URI;
  10. import java.net.URISyntaxException;
  11. import java.net.URL;
  12. import java.net.URLConnection;
  13. import java.util.List;
  14. import java.util.Properties;
  15. public class NetProxy
  16. {
  17.     // 测试本地JVM的网络缺省配置
  18.     public void setLocalProxy()
  19.     {
  20.         Properties prop = System.getProperties();
  21.        //设置http访问要使用的代理服务器的地址
  22.         prop.setProperty("http.proxyHost""10.10.0.96");
  23.        //设置http访问要使用的代理服务器的端口
  24.         prop.setProperty("http.proxyPort""8080");
  25.        //设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
  26.         prop.setProperty("http.nonProxyHosts""localhost|10.10.*");
  27.        //设置安全访问使用的代理服务器地址与端口
  28.        //它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
  29.         prop.setProperty("https.proxyHost""10.10.0.96");
  30.         prop.setProperty("https.proxyPort""443");
  31.         //使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
  32.         prop.setProperty("ftp.proxyHost""10.10.0.96");
  33.         prop.setProperty("ftp.proxyPort""2121");
  34.         prop.setProperty("ftp.nonProxyHosts""localhost|10.10.*");
  35.         //socks代理服务器的地址与端口
  36.         prop.setProperty("socksProxyHost""10.10.0.96");
  37.         prop.setProperty("socksProxyPort""1080");
  38.     }
  39.     // 清除proxy设置
  40.     public void removeLocalProxy()
  41.     {
  42.         Properties prop = System.getProperties();
  43.         prop.remove("http.proxyHost");
  44.         prop.remove("http.proxyPort");
  45.         prop.remove("http.nonProxyHosts");
  46.         prop.remove("https.proxyHost");
  47.         prop.remove("https.proxyPort");
  48.         prop.remove("ftp.proxyHost");
  49.         prop.remove("ftp.proxyPort");
  50.         prop.remove("ftp.nonProxyHosts");
  51.         prop.remove("socksProxyHost");
  52.         prop.remove("socksProxyPort");
  53.     }
  54.     //
  55.     // 测试http
  56.     public void showHttpProxy(Object... proxy)
  57.     {
  58.         URL url = null;
  59.         try
  60.         {
  61.             url = new URL("http://blog.csdn.com/smallnest");
  62.         }
  63.         catch (MalformedURLException e)
  64.         {
  65.             return;
  66.         }
  67.         try
  68.         {
  69.             URLConnection conn = null;
  70.             switch (proxy.length)
  71.             {
  72.             case 0:
  73.                 conn = url.openConnection();
  74.                 break;
  75.             case 1:
  76.                 conn = url.openConnection((Proxy) proxy[0]);
  77.                 break;
  78.             default:
  79.                 break;
  80.             }
  81.             if (conn == null)
  82.                 return;
  83.             conn.setConnectTimeout(3000); // 设置连接超时时间
  84.             InputStream in = conn.getInputStream();
  85.             byte[] b = new byte[1024];
  86.             try
  87.             {
  88.                 while (in.read(b) > 0)
  89.                 {
  90.                     System.out.println(new String(b));
  91.                 }
  92.             }
  93.             catch (IOException e1)
  94.             {
  95.             }
  96.         }
  97.         catch (IOException e1)
  98.         {
  99.             e1.printStackTrace();
  100.         }
  101.     }
  102.     // 测试ftp
  103.     public void showFtpProxy(Object... proxy)
  104.     {
  105.         URL url = null;
  106.         try
  107.         {
  108.             url = new URL("ftp://ftp.tsinghua.edu.cn");
  109.         }
  110.         catch (MalformedURLException e)
  111.         {
  112.             return;
  113.         }
  114.         try
  115.         {
  116.             URLConnection conn = null;
  117.             switch (proxy.length)
  118.             {
  119.             case 0:
  120.                 conn = url.openConnection();
  121.                 break;
  122.             case 1:
  123.                 conn = url.openConnection((Proxy) proxy[0]);
  124.                 break;
  125.             default:
  126.                 break;
  127.             }
  128.             if (conn == null)
  129.                 return;
  130.             conn.setConnectTimeout(3000); // 设置连接超时时间
  131.             InputStream in = conn.getInputStream();
  132.             byte[] b = new byte[1024];
  133.             try
  134.             {
  135.                 while (in.read(b) > 0)
  136.                 {
  137.                     System.out.println(new String(b));
  138.                 }
  139.             }
  140.             catch (IOException e1)
  141.             {
  142.             }
  143.         }
  144.         catch (IOException e1)
  145.         {
  146.             e1.printStackTrace();
  147.         }
  148.     }
  149.     // 得到一个proxy
  150.     public Proxy getProxy(Proxy.Type type, String host, int port)
  151.     {
  152.         SocketAddress addr = new InetSocketAddress(host,port);
  153.         Proxy typeProxy = new Proxy(type, addr);
  154.         return typeProxy;
  155.     }
  156.     public static void main(String[] args)
  157.     {
  158.         NetProxy proxy = new NetProxy();
  159.         //测试代理服务器
  160.         proxy.setLocalProxy();
  161.         proxy.showHttpProxy();
  162.         //下面两行是清除系统属性,而通过Proxy类指定代理服务器
  163.         // proxy.removeLocalProxy
  164.         //proxy.showHttpProxy(proxy.getProxy(Proxy.Type.SOCKS,"10.10.0.96",1080));
  165.         
  166.                 
  167.     }
  168. }

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有