2)根據需要設定線程組參數
3)建立TCP采樣
3)配置TCP采樣參數
基本上一個簡單的測試計划就完成了,點擊運行采樣,就會將文本發送出去。
4.高級功能配置
如增加一個變量名 bank, 其值為 1111,在前面發送的報文中加上${bank}即可引用,如

執行之后就可以在監控器中看到報文中有1111了
如果報文還需要加上頭的話,需要額外計算一下。比如增加一個command id和報文長度。比如上文中文本長度在編輯器狀態欄上顯示155長,假定command id是1.
System.out.println("1 hex " + Integer.toHexString(1)); ---1
# TCP Sampler configuration
#---------------------------------------------------------------------------
#tcp.handler=TCPClientImpl
tcp.handler=BinaryTCPClientImpl
jmeter測試TCP服務器,使用TCP采樣器模擬發送TCP請求。
TCP采樣器:打開一個到指定服務器的TCP / IP連接,然后發送指定文本並等待響應。
jmeter模擬發送TCP請求的方法:
1.新建線程組,然后在線程組中新建TCP采樣器

TCP采樣器中填寫服務器地址、端口和“要發送的文本”,其它選項根據需要選填:
re_use connection表示重復發送連接請求
close connection 關閉連接
如果TCP請求需要用戶名/密碼,可以在登錄配置中填寫
2.新建“察看結果樹”監視器,查看發送的請求和響應的結果。如果需要發送16進制報文這個地方會失敗。
jmeter發送16進制TCP報文的方法:
很多TCP服務器報文為16進制,並且多數不能轉換成文本發送,而jmeter默認發送文本。
jmeter.properties中修改tcp.handler=BinaryTCPClientImpl ,啟動jmeter重新發送,抓包查看既是16進制的tcp報文。
另一個方法:可以在工作台新建–非測試元件–Property Display,Property Display中修改jmeter.properties只對當前進程有效。
轉載請注明出處:6san.com
原文地址: http://www.6san.com/716/
Jmeter TCP取樣器配置及發送圖解
最近在通過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的文本框中

發送就成功,查看結果樹中正好是我們想要的內容:

參考文檔:http://jmeter.apache.org/usermanual/component_reference.html#TCP_Sampler
