论坛首页 入门技术论坛

Java 代理的使用(练习)

浏览 2085 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-08  
java 代码
  1. import java.io.IOException;   
  2. import java.io.InputStream;   
  3. import java.net.*;   
  4. import java.net.InetSocketAddress;   
  5. import java.net.MalformedURLException;   
  6. import java.net.Proxy;   
  7. import java.net.Socket;   
  8. import java.net.URL;   
  9. import java.net.URLConnection;   
  10. import java.net.UnknownHostException;   
  11. import java.util.Vector;   
  12.   
  13.   
  14. public class Proxy0605 {   
  15.     Vector<InetSocketAddress> ipvector=new Vector<InetSocketAddress>();//存放InetSocketAddress类的对像的一个集合   
  16.     Vector<Proxy> proxys=new Vector<Proxy>();   
  17.     Proxy0605(){   
  18.   
  19.   
  20.     }   
  21.     private void setProxy(){   
  22.         int[] ports={80,81};   
  23.         for(int i=192;i<193;i++)   
  24.             for(int j=168;j<169;j++)   
  25.                 for(int k=0;k<1;k++)   
  26.                     for(int l=1;l<3;l++){   
  27.                         for(int port:ports){   
  28.                             try {   
  29.                                 System.out.println(i+"."+j+"."+k+"."+l+":"+port);   
  30.                                 Socket sc=new Socket(i+"."+j+"."+k+"."+l,port);   
  31.                                 ipvector.add(new InetSocketAddress(sc.getInetAddress(),sc.getPort()));   
  32.   
  33.                             } catch (UnknownHostException e) {   
  34.   
  35.                                 e.printStackTrace();   
  36.                                 System.err.println("主机名未知");   
  37.                             } catch (ConnectException e) {   
  38.   
  39.                                 System.err.println("远程主机连接错误");   
  40.                             }catch(IOException ioe){   
  41.                                 System.err.println("数据读取错误");   
  42.                             }   
  43.                         }   
  44.                     }   
  45.     }   
  46.   
  47.   
  48.     private void showProxy(){   
  49.         System.out.println("可以建立连接的地址有");   
  50.         for(InetSocketAddress ins:ipvector)//遍历ipverctor数组的所有元素   
  51.             System.out.println(ins);   
  52.     }   
  53.   
  54.   
  55.     private void addProxy(){   
  56.         for(InetSocketAddress ins:ipvector){   
  57.   
  58.             proxys.add(new Proxy(Proxy.Type.HTTP,ins));   
  59.         }   
  60.     }   
  61.   
  62.     public boolean testHttpProxy(Proxy proxy)  //proxy不应为null,应在调用程序中进行控制   
  63.     {   
  64.         URL url = null;   
  65.         //System.err.println(proxy);   
  66.         try  
  67.         {   
  68.             url = new URL("http://192.168.0.5/");   
  69.         }   
  70.         catch (MalformedURLException e)   
  71.         {   
  72.             System.err.println("URL 出错!!!!");   
  73.         }   
  74.         try  
  75.         {   
  76.             URLConnection conn = null;   
  77.                  conn = url.openConnection(proxy);   
  78.             URLConnection conn2=null;   
  79.                  conn2=url.openConnection();   
  80.             if (conn == null)   
  81.                 return false;   
  82.   
  83.             conn.setConnectTimeout(3000); // 设置连接超时时间   
  84.             InputStream in = conn.getInputStream();   
  85.             InputStream in2=conn2.getInputStream();   
  86.             byte[] b = new byte[256];   
  87.             byte[] b2=new byte[256];   
  88.   
  89.                 in.read(b);   
  90.                 in2.read(b2);   
  91.                 System.out.println(new String(b2));   
  92.                 if((new String(b)).equals(new String(b2))){   
  93.                     return true;   
  94.                 }   
  95.         }catch(SocketException se){   
  96.             System.out.println("远程主机连接错误!!");   
  97.         }catch(UnknownHostException ukhe){   
  98.             System.out.println("主机地址不可达!!!");   
  99.         }   
  100.         catch (IOException e1)   
  101.         {   
  102.             e1.printStackTrace();   
  103.         }   
  104.         return false;   
  105.     }   
  106.   
  107.     public static void main(String[] strings){   
  108.         Proxy0605 p=new Proxy0605();   
  109.         p.setProxy();   
  110.         p.showProxy();   
  111.         p.addProxy();   
  112.         System.out.println("以下输出可以用的代理地址:");   
  113.         for(Proxy proxy:p.proxys){   
  114.             {   
  115.           if(proxy!=null)   
  116.             if(p.testHttpProxy(proxy))   
  117.                 System.err.println(proxy);   
  118.         }   
  119.         }   
  120.     }   
  121. }  

这是我给同学做的,他的毕业设计的一部分,现在答辩完了,也就无所谓了,发上来备用。

 

其中有部分判是否代理的部分有点麻烦。因为不是代理也是可以建立连接的,不知道这样用是否正确,还请各位指点。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics