Jmeter(1):使用TCP取样器与socket接口进行简单通信
一个小任务:服务器与客户端连接,每次发送50个随机生成的字符,两秒发送一次
失败过太多次,然后昨晚终于跑通了,心情激动,于是清均第一篇博客就诞生了。
之前不了解jmeter,想过单纯用java编写服务器和客户端,但代码多。然后老师介绍了jmeter。还用过tomcat做接收端,但试了两天都不行。
最后成功的方法:
用java写服务器,jmeter模拟客户端。
先介绍java写服务器这方面,仿照教材写了一个简单的服务器。
1 import java.net.*; 2 import java.io.*; 3 4 public class ServerSocketTest { 5 6 private BufferedReader reader; 7 private ServerSocket server; 8 private Socket socket; //创建三个对象,服务器,套接字,还有用来读取的reader 9 10 void getserver() { 11 try{ 12 server = new ServerSocket(8055); //不能重复创建port一样的ServerSocket,否则会报错 13 System.out.println("服务器套接字已经创建成功"); 14 while(true) { //true的意思是套接字是连接状态 15 System.out.println("等待客户机的连接"); 16 socket = server.accept(); //等待客户机的连接,若连接,则创建一套接字 17 reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 18 getClientMessage(); 19 20 } 21 }catch (Exception e) { 22 e.printStackTrace(); 23 } 24 } 25 26 private void getClientMessage() { 27 //获取客户端信息 28 try{ 29 30 System.out.println("客户机:"+reader.readLine()); //很重要的一个方法,获取客户端信息 31 32 }catch (Exception e) { 33 e.printStackTrace(); 34 } 35 36 //接收到信息就关闭 37 try{ 38 39 if (reader !=null) { 40 reader.close(); 41 } 42 if (socket !=null) { 43 socket.close(); 44 } 45 46 }catch (IOException e) { 47 e.printStackTrace(); 48 } 49 } 50 51 public static void main(String[] args) { 52 ServerSocketTest tcp = new ServerSocketTest(); 53 tcp.getserver(); 54 55 } 56 57 }
启动这个类的main函数,就相当于启动了这个服务器。如下图所示。
Jmeter部分:
Jmeter的下载安装配置我就不详细介绍了,网上可以找到很多教程。
打开bin文件夹,打开名为ApacheJmeter的jar包。等待jmeter启动。
会看到一个测试计划,可以重命名。
右键测试计划,新建线程组——右键线程组--添加--sampler--tcp取样器——右键tcp取样器,添加监听器。
一个框架大概就做好了。
在线程组里设置线程数,总时间和循环次数,我分别设置的是4,8,1
在tcp取样器中添加服务器的ip地址和端口号,设置连接和响应时间。
点击左上角选项——函数助手对话框——选择功能__RandomString——长度填50,下一行输入生成字符串的范围。如1234567890qingjun,再下一行不用填。
——点击生成,可以拷贝函数到tcp取样器要发送的文本里,然后按回车空一行,不然发送不成功。
点击右上角的黄色警示图标可以看到jmeter运行情况。
点击绿色三角启动,或者左上角运行--启动。
jmeter:
结果树:绿色√表示成功了。
汇总报告:
服务器显示:
由简入繁,但最后明白了大道至简。总之第一步成功了。
开心。
接下来的学习总结还会发布在博客园,希望自己能坚持下去。