jmeter与tcp和udp建立连接

Posted chongyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter与tcp和udp建立连接相关的知识,希望对你有一定的参考价值。

1.jmeter 与tcp 建立连接

 先启动一个tcp服务端

# -*- coding:utf-8 -*-
#@Time : 2020/5/17 20:18
#@Author: 张君
#@File : server_test.py

# 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()+‘
‘.encode("utf-8"))
            self.request.sendall(self.data.upper()+‘
‘.encode("utf-8"))   #转为大写字母后返回给客户端
		    # 可以加一个服务端断开的


if __name__ == "__main__":
    HOST, PORT = "", 8001
    server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)
    print("启动了")
    server.serve_forever()
    #server.server_close()

 

客户端

# -*- coding:utf-8 -*-
#@Time : 2020/5/17 20:17
#@Author: 张君
#@File : client_test.py

import logging, time, socket, struct, binascii

target_host = "127.0.0.1"

target_port = 8001
# AF_INET指定使用IPv4协议,如果要用更先进的IPv6,就指定为AF_INET
# SOCK_STREAM指定使用面向流的TCP协议
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host, target_port))


for i in range(1):
    msg="zhangjun"
    client.send(msg.encode("utf-8"))
    response = client.recv(2048)
    logging.info("响应bytes是: {}".format(response))

  

jmeter模拟客户端

技术图片

 

 技术图片  注意设置的eol 10(! 的 accsii码 )  是因为客户端与服务端没有协商  怎么确定是关闭连接,所以客户端 会一直等待服务端发送响应,实际服务端已经发送完了,   所以客户端自己设置的,客户端自己来判断 算数据接收完,所以客户端使用! 就算接收完, 如果客户端不设置断开连接的表示,在结果书中会显示500

技术图片

 

 

2.jmeter与udp 连接

udp 服务端

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("127.0.0.1", 3600))
print("UDP bound on port 3600...")

while True:
    data, addr = s.recvfrom(1024)
    print("Receive from %s:%s" % addr)
    if data == b"exit":
        s.sendto(b"Good bye!
", addr)
        continue
    s.sendto(b"Hello %s!
" % data, addr)

jmeter 模拟客户端连接

IP:服务端IP ,UDP服务的端口  response timeout:超时时间, decode class:kg.apc.jmeter.samplers.UDPSampler  request data:返回内容

技术图片

 

 服务端收到的内容

技术图片

 

 客户端收到的服务端内容:

技术图片

 

 我上传了我做的一些demo,主要是一些control

链接:https://pan.baidu.com/s/1bRFUgEdLebGvgGPoyTSkHw
提取码:1t72

以上是关于jmeter与tcp和udp建立连接的主要内容,如果未能解决你的问题,请参考以下文章

UDP与TCP的区别

TCP与UDP

TCP与UDP的区别

UDP和TCP有啥区别

tcp和udp的区别

tcp和udp有啥区别