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

浙公网安备 33010602011771号