`
leshy
  • 浏览: 27169 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

Java 代理的使用(练习)

阅读更多
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. }  

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

 

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

分享到:
评论

相关推荐

    java变成思想第四版中文版 练习题答案

    通过《Java编程思想》第四版的中文版练习题答案,你可以对照书中内容,逐一解决练习中的问题,加深对Java语言的理解,提高编程技能。同时,理论知识结合实际练习,将有助于你更好地掌握这些关键知识点。

    java小练习及答案

    Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和丰富的类库而闻名。这个"java小练习及答案"资源显然是为了帮助初学者巩固Java编程基础,通过实践来提高编程技能。以下是对这些练习可能涉及的知识点...

    Java自己做的经典练习

    在Java编程领域,练习是提升技能的关键。"Java自己做的经典练习"这个标题暗示了这是一个包含了一系列用Java语言编写的代码实例,旨在帮助开发者巩固基础知识,掌握核心概念,并提升解决问题的能力。下面,我们将深入...

    java 高级 课件 练习题

    另外,Java反射API允许程序在运行时动态访问类的信息,如类名、方法名、参数类型等,这在元编程和动态代理中非常有用。然而,反射使用不当也可能带来安全风险和性能问题,因此需谨慎使用。 Java的异常处理机制也是...

    java se代码练习 Java学习资料

    4. **集合框架**:Java集合框架是存储和管理对象的重要工具,包括List、Set、Map接口及其实现类如ArrayList、LinkedList、HashSet、HashMap等,理解和熟练使用这些集合类是Java编程必备技能。 5. **IO流**:Java的...

    java高级课后练习题2

    这在元编程和动态代理中非常有用,但需谨慎使用,因为它可能会破坏封装性。 5. **IO流**:Java的IO流系统支持对文件、网络、内存的数据读写。流分为字节流和字符流,有输入流和输出流之分,还有缓冲流、转换流等。...

    JAVA SE源码练习 Java学习资料

    这个"JAVA SE源码练习"的压缩包文件包含了丰富的Java学习资料,可能是为了帮助初学者或有经验的开发者深入理解Java语言的内部机制和最佳实践。 在Java SE中,最重要的部分是JVM(Java虚拟机),它是Java程序运行的...

    java ssh练习题

    5. **JSP**:理解JSP的生命周期,如何使用EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library),以及如何在JSP中调用Java方法。 文件名列表中的"2.jpg、1.jpg、3.jpg"可能包含了练习题的截图或示例,...

    java聊天室附加代理服务器(模拟)

    在Java编程领域,构建一个聊天室是一个常见的练习,它涉及到网络编程、多线程以及用户交互等多个技术点。在这个项目中,我们不仅会构建一个基本的聊天室,还将引入代理服务器的概念,以增强安全性并实现信息的中转。...

    java SE基础练习代码 Java学习资料

    在"java-se-master"中,可能包含了许多类的实现,通过阅读和实践,你可以了解如何创建和使用类。 3. **封装、继承与多态**: 这是面向对象的三大特性。封装意味着隐藏内部实现细节,提供公共接口;继承允许子类继承...

    S1Accp6.0使用java理解程序逻辑1-17章课后题和上机练习

    9. **Chap17-高级特性**:最后的章节可能涉及一些高级主题,如反射、动态代理、设计模式等,这些都是进阶Java开发者需要掌握的技能。 通过北大青鸟S1Accp6.0的课程,学生不仅会学习到Java的基础语法,还将通过实践...

    JAVA SE练习代码 Java学习资料

    这个压缩包文件“JAVA SE练习代码 - Java学习资料”显然包含了帮助学习和练习Java SE编程的各种资源。以下是一些相关的Java SE知识点和学习重点: 1. **基础语法**:Java是一种面向对象的语言,学习之初需要掌握...

    第四版-Thinking+In+Java-练习题答案

    8. **反射**:Java的反射机制让我们能在运行时动态获取类的信息并操作对象,这在许多高级应用中,如插件系统、序列化、动态代理等方面都有重要作用。 通过解答《Thinking in Java》第四版的练习题,我们可以系统地...

    关于java项目实战练习

    在Java项目实战练习中,我们通常会涉及到许多关键知识点,这些知识涵盖了软件开发的各个方面,包括但不限于编程基础、设计模式、框架应用、数据库交互、异常处理、多线程以及单元测试等。以下是对这些核心概念的详细...

    java习题代码集

    本资源“java习题代码集”旨在为学习者提供一系列Java编程的练习题目和对应的代码实现,帮助初学者巩固基础,提升编程技能。 1. **基础语法** Java的基础语法包括变量定义、数据类型(如整型、浮点型、字符型和...

    java的练习

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计目标是简洁、健壮、安全、可移植,并且具有高性能。Java的应用领域非常广泛,包括桌面应用、企业级...

    JAVA8个人练习,异常,常用类,枚举,泛型,io流,网络编程,反射,动态代理等等

    8. **动态代理**:Java 8 中动态代理可以实现接口,并在运行时生成代理类。这在实现 AOP(面向切面编程)或事件监听器时非常有用。`java.lang.reflect.Proxy` 和 `java.lang.reflect.InvocationHandler` 是实现动态...

    Java软件开发实战 Java基础与案例开发详解 2-7 java上机练习 共5页.pdf

    2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1...

    包含了Java SE Java学习资料 Java SE学习练习项目源码

    8. **反射机制**: 反射允许在运行时动态地获取类的信息并操作类的对象,是Java的一个强大特性,常用于插件系统、序列化、动态代理等领域。 9. **JDBC**: Java Database Connectivity是Java与数据库交互的标准API,...

    985工程大学的java课程练习题

    本资源包含了这些顶级学府中Java课程的练习题,旨在帮助学生深入理解和掌握Java语言的核心概念以及实际应用技巧。 一、Java基础 1. 变量与数据类型:了解Java中的基本数据类型(整型、浮点型、字符型、布尔型)以及...

Global site tag (gtag.js) - Google Analytics