如有一个用JAVA写的测算服务器响应速度程序

java服务器  时间:2021-01-30  阅读:()

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

1.任务描述

需要做一个程序,对某一服务器运行的web server进行测算,看对提出的request做出相应的时间,而且在多个request同时提出时的响应时间。

2. 计划

因为java sdk中包含有比较全面的class能够对http等多种协议的处理方法进行了封装,用起来比较方便, 能够在比较短的时间内快速开发出这一测算工具。

需要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;

HttpURLConnection conn = (HttpURLConnection)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 {

URL url;

String[] key;

String[] value;

String method;int length = 0;public void addPair(String k, String v) {

Array. set(key, length, k) ;

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

Array. set(value, length, v) ;length++;

}

}

是用来传递参数的一个类。参数是主程序从文件中读出来并存入这个类的一个对象里,然后经过初始化TestThread传递给它的对象。public class TestServer {static int loopTimes = 500;public Parameter readFromArgFile(String str) {

FileInputStream fileInput;

BufferedReader br;

Parameter param = new Parameter() ;try {fileInput = new FileInputStream(new File(str) ) ;br = new BufferedReader(

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。new InputStreamReader( fileInput ) ) ;

String line;while( (line = br.readLine() ) != null ) {if( line. startsWith("URL") == true && line. indexOf("=") = 3) {int f = line. indexOf("=") ;

String urlstring = line. substring(f+1) ;urlstring. trim() ;param.url = new URL(urlstring) ;

}else if( line. startsWith("METHOD") == true && line. indexOf("=") = 3) {int f = line. indexOf("=") ;

String method = line. substring(f+1) ;method. trim() ;param.method = method;

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。}else if( line. indexOf("=") != -1 ) {int f = line. indexOf("=") ;

String key = line. substring(0, f-1) ;

String value = line. substring(f+1) ;param.addPair(key. trim() , value. trim() ) ;

}

}fileInput.close() ;br.close() ;

}catch(FileNotFoundException e) {

System.out.println("File " + str + " not found. ") ;}

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。catch(NullPointerException e) {

}catch(IOException e) {

System.out.println(e) ;

}return param;

}public static void main(String[] args) {int i ;int j;

Parameter param;

TestServer tester = new TestServer() ;for(i = 0; i  Array.getLength(args) ; i++) {param = tester.readFromArgFile(args[i]) ;for(j = 0; j  loopTimes; j++) {

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

Thread th = new Thread(new TestThread(param) ) ;th. start() ;

}

}

}

}

主程序main也比较简单,从命令行参数中读取文件名, 并依次打开,读取其中的配置参数,创立Parameter对象, 并传递给TestThread对象,然后启动TestThread线程。需要注意的是其中的错误处理, 当发现某个文件读写错误的时候,是跳过这个文件而读取下一个文件,而不是简单的退出。

就这么简单。 (当然,适当的改写一下,就能够做一个加贴机或者灌水机之类的东东,那是你的爱好,和我无关: -) )

程序全文列在最后, 并附上了说明

---------------------------------------------------------------------

----------

美国云服务器 1核 1G 30M 50元/季 兆赫云

【双十二】兆赫云:全场vps季付六折优惠,低至50元/季,1H/1G/30M/20G数据盘/500G流量/洛杉矶联通9929商家简介:兆赫云是一家国人商家,成立2020年,主要业务是美西洛杉矶联通9929线路VPS,提供虚拟主机、VPS和独立服务器。VPS采用KVM虚拟架构,线路优质,延迟低,稳定性强。是不是觉得黑五折扣力度不够大?还在犹豫徘徊中?这次为了提前庆祝双十二,特价推出全场季付六折优惠。...

2021HawkHost老鹰主机黑色星期五虚拟主机低至3.5折 永久4.5折

老鹰主机HawkHost是个人比较喜欢的海外主机商,如果没有记错的话,大约2012年左右的时候算是比较早提供支付宝付款的主机商。当然这个主机商成立时间更早一些的,由于早期提供支付宝付款后,所以受众用户比较青睐,要知道我们早期购买海外主机是比较麻烦的,信用卡和PAYPAL还没有普及,大家可能只有银联和支付宝,很多人选择海外主机还需要代购。虽然如今很多人建站少了,而且大部分人都用云服务器。但是老鹰主机...

牦牛云(3.5USD/月 )阿里云国际版云服务器 1核1G40G

收到好多消息,让我聊一下阿里云国际版本,作为一个阿里云死忠粉,之前用的服务器都是阿里云国内版的VPS主机,对于现在火热的阿里云国际版,这段时间了解了下,觉得还是有很多部分可以聊的,毕竟,实名制的服务器规则导致国际版无需实名这一特点被无限放大。以前也写过几篇综合性的阿里云国际版vps的分析,其中有一点得到很多人的认同,那句是阿里云不管国内版还是国际版的IO读写速度实在不敢恭维,相对意义上的,如果在这...

java服务器为你推荐
电脑管家和360哪个好360卫士和电脑管家,哪个更好手动挡和自动挡哪个好自动挡手动挡哪个好?二手车网站哪个好买二手车去哪里买比较划算?红茶和绿茶哪个好红茶和绿茶哪个更好?清理手机垃圾软件哪个好清理手机垃圾文件的软件哪个好?视频软件哪个好手机看视频用什么软件好google广告申请谷歌广告怎么申请?东莞电信网上营业厅东莞虎门电信营业厅360云盘网页版网页版360云盘打不开,求助!360云盘登陆首页怎样进入360的网络硬盘
香港服务器租用99idc 过期域名抢注 香港bgp机房 独享100m 全球付 韩国空间 视频存储服务器 英语简历模板word 双11抢红包攻略 2017年万圣节 qq数据库 me空间社区 135邮箱 129邮箱 广州服务器 七夕快乐英语 架设邮件服务器 个人免费邮箱 lamp怎么读 腾讯云平台 更多