近在通過Jmeter測試TCP發送請求時,遇到相關問題,現記錄
查看管方文檔,TCP發送有三種啟用方式:
· TCPClientImpl:文本數據,默認為這種
· BinaryTCPClientImpl:傳輸16進制數據,指定包結束符。這種16進制文件會通過Jmeter GUI來轉換
· LengthPrefixedBinaryTCPClientImpl:數據包中前2個字節為數據長度。可在bin/jmeter.properties配置文件中tcp.binarylength.prefix.length設置。
在實際抓包過程中,TCP的數據包很多時候都不是純文本的,經常是一些二進制文件之類的,所以這里直接用傳16進制方式來傳數據
在啟動jmeter之前,需要在在啟動文件中設置,如下:
#---------------------------------------------------------------------------
# TCP Sampler configuration
#---------------------------------------------------------------------------
# The default handler class
#tcp.handler=TCPClientImpl
tcp.handler=BinaryTCPClientImpl
#
# eolByte = byte value for end of line
# set this to a value outside the range -128 to +127 to skip eol checking
#tcp.eolByte=1000
關鍵來了,我怎么獲取這個16進制數據呢?這里用wireshark可以很好解決這個問題,操作如下:
下圖是抓到的包,怎么抓包這里不介紹了:
第二步:右鍵點擊Data--->Copy-->Bytes-->HEX Stream,如下圖:
完成后,直接在Ctrl+V貼入Jemeter的文本框中
發送成功,查看結果樹中正好是我們想要的內容: