jmeter(十一):TCP Sampler

TCP Sampler结构:

jmeter进行tcp请求测试的步骤:

运行server.py文件,启动server端

添加线程组

添加View Results Tree

添加TCP Sampler

设置TCP Sampler

执行并查看结果树

 

TCP请求主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。

TCP Sampler结构:


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

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

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

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

不写的话默认是TCPClientImpl类

Server Name or IP:待请求的域名或者IP

Port Number:端口号

Timeouts:设置请求和响应的超时时间,超时的话会报500错误。它决定了在你没有输入End of line 的时候,什么时候断开tcp连接。如果没有填写的话就会一直在这里,

End of line(EOL) byte value:文本结束符,非常重要。它表示的是服务端发送的最后一个字符的ascii码,如果不写或者写的不正确的话,在读取流的时候无限阻塞,直到超时。比如,如果服务器端返回的最后一个字符是"\n",那么该位置就要填写10;如果最后一个字符是"!",那么该位置就要填写33;

close connection:一个取样器就只会用一个tcp连接,也就是发送完报文以后,就关闭tcp连接。

Re-use connection:在一个线程里,复用一个连接,在要求TCP长连接的时候需要用到这个。

Text to send:待发送的数据报文

jmeter进行tcp请求测试的步骤:
运行server.py文件,启动server端
python文件内容:

# encoding=utf-8



import socketserver

import threading



class MyTCPHandler(socketserver.BaseRequestHandler):

def handle(self):

while True:

self.data = self.request.recv(1024).strip()

cur_thread = threading.current_thread()

print(cur_thread)

if not self.data:

print(u"客户端:%s 退出!" % self.client_address[0])

break

print(u"%s 内容:%s" % (self.client_address[0], self.data.decode("utf-8")))

## self.request.sendall(self.data.upper()+'\n'.encode("utf-8"))

self.request.sendall(self.data.upper())



if __name__ == "__main__":

HOST, PORT = "", 8001

server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)

server.serve_forever()

 

添加线程组


添加View Results Tree


添加TCP Sampler


设置TCP Sampler
Server Name or IP:127.0.0.1

Port Number:8001(因为python文件中server的端口为8001)

Text to send:hi,gloryroad!

End of line(EOL) byte value:33。因为server.py中是将客户端发送的数据转换为大写字符返回给客户端,也就是Text to send中字符对应的大写形式,最后一个字符是!,对应的ascii码为33

 

执行并查看结果树

————————————————
版权声明:本文为CSDN博主「小小小小人ksh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kongsuhongbaby/article/details/95805682

 

posted @ 2022-02-21 16:40  xct  阅读(207)  评论(0)    收藏  举报