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