1. 任务描述 需要做一个程序,对某一效劳器运行的 web server 进行测算,看对提出的 request 做出相应的时间,并且在多个 request 同时提出时的响应时间。 2. 方案 因为 java sdk 中包含有比拟全面的 class 能够对 等多种协议的处理方法进行了封装,用起来比拟方便,能够在比拟短的时间内快速开发出这一测算工具。 需要 2 个功能: a. 因为不是仅仅对一个 web server 或者一个 form 进行测算,所以需要程序能够灵活处理,完成各种工作。我采纳了配置文件的形式,让程序从配置文件中读取数据,并作相应动作。 b.需要采纳多线程方式,对同一个 web server 提交屡次 request. 3.开发过程 〔读者可以跟随这一过程,自己动手写代码,到全文结束,就能有一个完整可用的程序了〕 主要的工作都有 TestThread 来完成。代码如下: class TestThread implements Runnable { Parameter param; TestThread(Parameter par) { param = par; } public void run() { long time1 = new Date().getTime(); try { URL target = param.url; URLConnection conn = ( URLConnection) target.openConnection(); conn.setRequestMethod(param.method); int i; for( i = 0; i < param.length; i++ ) { conn.setRequestProperty(param.key[i], param.value[i]); } conn.connect(); BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String inputLine; while( (inputLine = in.readLine()) != null ); } catch(Exception e) { } long time2 = new Date().getTime(); System.out.println(time2 - time1); } } class TestThread implements Runnable, 而不是用 extends Thread, 的好处是独立设计一个类,这个类还可以 extends 其它的 class, 而不是单独的 extends Thread. 另外一个好处是,可以把处理方法放在各个不同的方法中,然后在 void run()中调用,程序结构比拟清楚。 程序工作如下: 在初始化一个 TestThread 实例的时候,接受一个 Parameter 参数〔稍候介绍〕,并在线程启动时,计算开始的时间,向目标机器发送请求包,接受目标机器的返回结果,再次计算时间,并得到两次时间之差,这就是效劳器的响应时间。 具体程序可以自己看懂,就不多说了。 class Parameter { U...