近在通過Jmeter測試TCP發(fā)送請求時,遇到相關(guān)問題,現(xiàn)記錄
查看管方文檔,TCP發(fā)送有三種啟用方式:
· TCPClientImpl:文本數(shù)據(jù),默認(rèn)為這種
· BinaryTCPClientImpl:傳輸16進(jìn)制數(shù)據(jù),指定包結(jié)束符。這種16進(jìn)制文件會通過Jmeter GUI來轉(zhuǎn)換
· LengthPrefixedBinaryTCPClientImpl:數(shù)據(jù)包中前2個字節(jié)為數(shù)據(jù)長度?稍赽in/jmeter.properties配置文件中tcp.binarylength.prefix.length設(shè)置。
在實際抓包過程中,TCP的數(shù)據(jù)包很多時候都不是純文本的,經(jīng)常是一些二進(jìn)制文件之類的,所以這里直接用傳16進(jìn)制方式來傳數(shù)據(jù)
在啟動jmeter之前,需要在在啟動文件中設(shè)置,如下:
#---------------------------------------------------------------------------
# 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
關(guān)鍵來了,我怎么獲取這個16進(jìn)制數(shù)據(jù)呢?這里用wireshark可以很好解決這個問題,操作如下:
下圖是抓到的包,怎么抓包這里不介紹了:
第二步:右鍵點擊Data--->Copy-->Bytes-->HEX Stream,如下圖:
完成后,直接在Ctrl+V貼入Jemeter的文本框中
發(fā)送成功,查看結(jié)果樹中正好是我們想要的內(nèi)容: