手把手教学Jmeter之TCP取样器(含遇到的坑)

Jmeter.TCP取样器

##需求:公司需要做一个模拟设备,模拟发送报文,要求是先发一个签到报文,然后再发送正文。后续还有要从上一个报文取数据拿到下一个发送报文。

先介绍一下tcp取样器的界面,上面红色圈起来部分是我要讲的。

名称,注释:

顾名思义就不讲了。。

TCPClient classname:

这是重点,这代表了你发出去的TCP报文是什么格式的,Jmeter自己提供的是实现了三类:

TCPClientImpl:

这是最简单的实现类,就是基础的文本,可以设置他的编码格式。一般用来发json串。

BinaryTCPClientImpl:

这是我要重点说的,这个是用来发送十六进制报文的时候,在classname里设置成BinaryTCPClientlmpl,他能将十六进制报文转换成二进制,然后读取响应的时候又反过来。

LengthPrefixedBinaryTCPClientImpl:

这个类是实现了BinaryTCPClientImpl类,所以继承了所有功能,它在BinaryTCPClientlmpl前面增加两个字节数据长度。

服务器名称或ip,端口号:

这个也是顾名思义,就是填你要发送报文的地址,相当于你发快递填的收货人。

超时:连接,响应:

这个挺重要的,它决定了在你没有输入End of line 的时候,什么时候断开tcp连接。

##超时会报500错误,如果你没有设置End of line的话,会在读取流的时候无限阻塞,直到超时,报500错误

##解决方法:设置End of line(后面直接称eol),eol是文本结束符,是说的返回的响应数据最后一位。

如果没有填写的话就会一直在这里,直到超时。

##我自己的话,因为需要不一样,我是直接下载tcp源码去编译,然后改内部的函数,让他不报错。对了,要注意的一点是,就算你勾选了Re-use connection,如果一旦报错的话,还是会把TCP连接给断掉的。在下一个取样器再重新新开一个tcp连接。我后面就需要在一个tcp长连接里发送多个不同的报文,所以需要自己在函数里改掉不报错。

close connection:

如果你勾选的话,一个取样器就只会用一个tcp连接,也就是你发送完报文以后,就关闭tcp连接。

Re-use connection:

如果勾选的话,就代表,在一个线程里,复用一个连接,在要求TCP长连接的时候需要用到这个。

发送文本:

顾名思义也就是报文了。

我自己改的地方是:

它这里就是如果发生读取流超时或者其他错误的时候,是会在第二个参数传一个ReadException进去的,但是我就自己把它改成了null,这样的话就不会报错了。主要因为我的报文是不固定的,所以不能确定结束符是什么,所以只能这样改。

 

  • 13
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 45
    评论
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值