一个小任务:服务器与客户端连接,每次发送50个随机生成的字符,两秒发送一次

失败过太多次,然后昨晚终于跑通了,心情激动,于是清均第一篇博客就诞生了。

之前不了解jmeter,想过单纯用java编写服务器和客户端,但代码多。然后老师介绍了jmeter。还用过tomcat做接收端,但试了两天都不行。

最后成功的方法:

用java写服务器,jmeter模拟客户端。

先介绍java写服务器这方面,仿照教材写了一个简单的服务器。

 import java.net.*;
import java.io.*; public class ServerSocketTest { private BufferedReader reader;
private ServerSocket server;
private Socket socket; //创建三个对象,服务器,套接字,还有用来读取的reader void getserver() {
try{
server = new ServerSocket(8055); //不能重复创建port一样的ServerSocket,否则会报错
System.out.println("服务器套接字已经创建成功");
while(true) { //true的意思是套接字是连接状态
System.out.println("等待客户机的连接");
socket = server.accept(); //等待客户机的连接,若连接,则创建一套接字
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getClientMessage(); }
}catch (Exception e) {
e.printStackTrace();
}
} private void getClientMessage() {
//获取客户端信息
try{ System.out.println("客户机:"+reader.readLine()); //很重要的一个方法,获取客户端信息 }catch (Exception e) {
e.printStackTrace();
} //接收到信息就关闭
try{ if (reader !=null) {
reader.close();
}
if (socket !=null) {
socket.close();
} }catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
ServerSocketTest tcp = new ServerSocketTest();
tcp.getserver(); } }

启动这个类的main函数,就相当于启动了这个服务器。如下图所示。

Jmeter部分:

Jmeter的下载安装配置我就不详细介绍了,网上可以找到很多教程。

打开bin文件夹,打开名为ApacheJmeter的jar包。等待jmeter启动。

会看到一个测试计划,可以重命名。

右键测试计划,新建线程组——右键线程组--添加--sampler--tcp取样器——右键tcp取样器,添加监听器。

一个框架大概就做好了。

在线程组里设置线程数,总时间和循环次数,我分别设置的是4,8,1

在tcp取样器中添加服务器的ip地址和端口号,设置连接和响应时间。

点击左上角选项——函数助手对话框——选择功能__RandomString——长度填50,下一行输入生成字符串的范围。如1234567890qingjun,再下一行不用填。

——点击生成,可以拷贝函数到tcp取样器要发送的文本里,然后按回车空一行,不然发送不成功。

点击右上角的黄色警示图标可以看到jmeter运行情况。

点击绿色三角启动,或者左上角运行--启动。

jmeter:

结果树:绿色√表示成功了。

汇总报告:

服务器显示:

由简入繁,但最后明白了大道至简。总之第一步成功了。

开心。

接下来的学习总结还会发布在博客园,希望自己能坚持下去。

Jmeter(1):使用TCP取样器与socket接口进行简单通信的更多相关文章

  1. 使用TCP取样器测试Socket接口

    1 JMeter下载安装 下载地址:JMeter,选择Binaries下面的zip包. 检查java环境,是否安装了jdk或者jre. 解压zip包->找到bin目录下jmeter.bat文件- ...

  2. 基于node的tcp客户端和服务端的简单通信

    1.简单介绍下TCP/IP TCP/IP是互联网相关协议的集合,分为以下四层:应用层.传输层.网络层.数据链路层. 分成四层的好处是,假如只有一层,某个地方需要改变设计时,就必须把所有整体替换掉,而分 ...

  3. 请问使用jmeter在tcp取样器测试中服务器名称或ip,端口可以填变量值吗?

    请问使用jmeter在tcp取样器测试中服务器名称或ip,端口可以填变量值吗?

  4. Jmeter之TCP取样器

    1.在线程组中添加“TCP取样器” 2.填写数据 以下截图是必须配置的 TCPClient classname:  填写TCP报文格式(有三类),默认前缀:org.apache.jmeter.prot ...

  5. Jmeter之TCP取样器(模拟数据上报压测)

    TCP压测 场景:模拟硬件设备上报数据(登录,心跳,GPS定位数据/光感数据/电量数据),对这个功能进行压测 啰嗦一句:TCP压测很简单,只要调通了一个TCP,后续的逻辑判断就用逻辑控制器和正则处理就 ...

  6. .net学习笔记---tcp/udp/http/socket

    什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信. 使用 ...

  7. ios开发网络知识 TCP,IP,HTTP,SOCKET区别和联系

    TCP,IP,HTTP,SOCKET区别和联系 网络由下往上分为:        对应 物理层-- 数据链路层-- 网络层--                       IP协议 传输层--     ...

  8. TCP/IP 和 Socket 的关系

    要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...

  9. HTTP,FTP,TCP,UDP及SOCKET

    一.TCP/IP协议简析TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层:网络层:IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议传输层:TCP协议与UDP协议应用层:F ...

随机推荐

  1. 为何只能在其关联的线程内启动timer?(Qt会检查一致性,否则就不执行)

    为何只能在其关联的线程内启动timer? 在QTimer源码分析(以Windows下实现为例) 一文中,我们谈到: QTimer的是通过QObject的timerEvent()实现的,开启和关闭定时器 ...

  2. JAVA SHA1加密

    public static String getSha1(String str){ if(str==null||str.length()==0){ return null; } char hexDig ...

  3. 栈内存不是只有2M吗?为什么不溢出?

    #include <stdio.h> #include <wchar.h> #include <stdlib.h> #define MAX_PATH 1024 FI ...

  4. Qt5.5以来对Network的改进(包括对SSL的功能支持,HTTP的重定向等等)

    Qt Network New SSL back-end for iOS and OS X based on Secure Transport. Note that in Qt 5.6 this wil ...

  5. 项目集成dubbo

    dubbo 用户指南: http://dubbo.io/User+Guide-zh.htm 开发指南:http://dubbo.io/Developer+Guide-zh.htm#DeveloperG ...

  6. delphi7 xml通用解析转换为stringgrid

    对于有n多记录的xml,可以填充到stringgrid中 其中 vkeynode 为 xml中 重复节点 function CommonAnalyzeXml(vxml,vkeynode: string ...

  7. TDD(测试驱动开发)死了吗?

    01.前言 很早之前,曾在网络上见到过 TDD 这 3 个大写的英文字母,它是 Test Driven Development 这三个单词的缩写,也就是“测试驱动开发”的意思——听起来很不错的一种理念 ...

  8. 高并发 Nginx+Lua OpenResty系列(7)——Lua开发库json

    JSON库 在进行数据传输时JSON格式目前应用广泛,因此从Lua对象与JSON字符串之间相互转换是一个非常常见的功能:目前Lua也有几个JSON库,如:cjson.dkjson.其中cjson的语法 ...

  9. iOS开发(4):录音AVAudioRecorder

    录音,声音的采集,一般有两种实现办法,一是使用AVAudioRecorder,一是使用AudioUnit.如果只是简单的录音,使用AVAudioRecorder就可以了,如果想更灵活地处理刚录到的声音 ...

  10. ssm中mapper注入失败的传奇经历

    最近因为要测试一个功能,需要用最短的时间来启动服务,开启测试程序,但平常所用的框架中已经集成了各种三方的东西,想着那就再重新搭建一个最简单的ssm框架吧. 搭建可参考:简单ssm最新搭建 搭建过程并不 ...