2007-07-08
Java 代理的使用(练习)
关键字: java 代理java 代码
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.*;
- import java.net.InetSocketAddress;
- import java.net.MalformedURLException;
- import java.net.Proxy;
- import java.net.Socket;
- import java.net.URL;
- import java.net.URLConnection;
- import java.net.UnknownHostException;
- import java.util.Vector;
- public class Proxy0605 {
- Vector<InetSocketAddress> ipvector=new Vector<InetSocketAddress>();//存放InetSocketAddress类的对像的一个集合
- Vector<Proxy> proxys=new Vector<Proxy>();
- Proxy0605(){
- }
- private void setProxy(){
- int[] ports={80,81};
- for(int i=192;i<193;i++)
- for(int j=168;j<169;j++)
- for(int k=0;k<1;k++)
- for(int l=1;l<3;l++){
- for(int port:ports){
- try {
- System.out.println(i+"."+j+"."+k+"."+l+":"+port);
- Socket sc=new Socket(i+"."+j+"."+k+"."+l,port);
- ipvector.add(new InetSocketAddress(sc.getInetAddress(),sc.getPort()));
- } catch (UnknownHostException e) {
- e.printStackTrace();
- System.err.println("主机名未知");
- } catch (ConnectException e) {
- System.err.println("远程主机连接错误");
- }catch(IOException ioe){
- System.err.println("数据读取错误");
- }
- }
- }
- }
- private void showProxy(){
- System.out.println("可以建立连接的地址有");
- for(InetSocketAddress ins:ipvector)//遍历ipverctor数组的所有元素
- System.out.println(ins);
- }
- private void addProxy(){
- for(InetSocketAddress ins:ipvector){
- proxys.add(new Proxy(Proxy.Type.HTTP,ins));
- }
- }
- public boolean testHttpProxy(Proxy proxy) //proxy不应为null,应在调用程序中进行控制
- {
- URL url = null;
- //System.err.println(proxy);
- try
- {
- url = new URL("http://192.168.0.5/");
- }
- catch (MalformedURLException e)
- {
- System.err.println("URL 出错!!!!");
- }
- try
- {
- URLConnection conn = null;
- conn = url.openConnection(proxy);
- URLConnection conn2=null;
- conn2=url.openConnection();
- if (conn == null)
- return false;
- conn.setConnectTimeout(3000); // 设置连接超时时间
- InputStream in = conn.getInputStream();
- InputStream in2=conn2.getInputStream();
- byte[] b = new byte[256];
- byte[] b2=new byte[256];
- in.read(b);
- in2.read(b2);
- System.out.println(new String(b2));
- if((new String(b)).equals(new String(b2))){
- return true;
- }
- }catch(SocketException se){
- System.out.println("远程主机连接错误!!");
- }catch(UnknownHostException ukhe){
- System.out.println("主机地址不可达!!!");
- }
- catch (IOException e1)
- {
- e1.printStackTrace();
- }
- return false;
- }
- public static void main(String[] strings){
- Proxy0605 p=new Proxy0605();
- p.setProxy();
- p.showProxy();
- p.addProxy();
- System.out.println("以下输出可以用的代理地址:");
- for(Proxy proxy:p.proxys){
- {
- if(proxy!=null)
- if(p.testHttpProxy(proxy))
- System.err.println(proxy);
- }
- }
- }
- }
这是我给同学做的,他的毕业设计的一部分,现在答辩完了,也就无所谓了,发上来备用。
其中有部分判是否代理的部分有点麻烦。因为不是代理也是可以建立连接的,不知道这样用是否正确,还请各位指点。







评论排行榜