1. 程式人生 > 其它 >jmeter(十一):TCP Sampler

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