查看管方文档,TCP发送有三种启用方式:
· TCPClientImpl:文本数据,默认为这种
· BinaryTCPClientImpl:传输16进制数据,指定包结束符。这种16进制文件会通过Jmeter GUI来转换
· LengthPrefixedBinaryTCPClientImpl:数据包中前2个字节为数据长度。可在bin/jmeter.properties配置文件中tcp.binarylength.prefix.length设置。
在实际抓包过程中,TCP的数据包很多时候都不是纯文本的,经常是一些二进制文件之类的,所以这里就直接用传16进制方式来传数据
在启动jmeter之前,需要在在启动文件中设置,如下:
#--------------------------------------------------------------------------- # TCP Sampler configuration #--------------------------------------------------------------------------- # The default handler class #tcp.handler=TCPClientImpl tcp.handler=BinaryTCPClientImpl # # eolByte = byte value for end of line # set this to a value outside the range -128 to +127 to skip eol checking #tcp.eolByte=1000 |
关键来了,我怎么获取这个16进制数据呢?这里用wireshark可以很好解决这个问题,操作如下:
下图是抓到的包,怎么抓包这里就不介绍了:
第二步:右键点击Data--->Copy-->Bytes-->HEX Stream,如下图:
完成后,直接在Ctrl+V贴入Jemeter的文本框中
发送就成功,查看结果树中正好是我们想要的内容: