Jmeter(1):使用TCP取樣器與socket接口進行簡單通信
一個小任務:服務器與客戶端連接,每次發送50個隨機生成的字符,兩秒發送一次
失敗過太多次,然後昨晚終於跑通了,心情激動,於是清均第一篇博客就誕生了。
之前不了解jmeter,想過單純用java編寫服務器和客戶端,但代碼多。然後老師介紹了jmeter。還用過tomcat做接收端,但試了兩天都不行。
最後成功的方法:
用java寫服務器,jmeter模擬客戶端。
先介紹java寫服務器這方面,仿照教材寫了一個簡單的服務器。
1 import java.net.*; 2 import java.io.*; 3 4 public class ServerSocketTest {5 6 private BufferedReader reader; 7 private ServerSocket server; 8 private Socket socket; //創建三個對象,服務器,套接字,還有用來讀取的reader 9 10 void getserver() { 11 try{ 12 server = new ServerSocket(8055); //不能重復創建port一樣的ServerSocket,否則會報錯13 System.out.println("服務器套接字已經創建成功"); 14 while(true) { //true的意思是套接字是連接狀態 15 System.out.println("等待客戶機的連接"); 16 socket = server.accept(); //等待客戶機的連接,若連接,則創建一套接字 17 reader = newBufferedReader(new InputStreamReader(socket.getInputStream())); 18 getClientMessage(); 19 20 } 21 }catch (Exception e) { 22 e.printStackTrace(); 23 } 24 } 25 26 private void getClientMessage() { 27 //獲取客戶端信息 28 try{ 29 30 System.out.println("客戶機:"+reader.readLine()); //很重要的一個方法,獲取客戶端信息 31 32 }catch (Exception e) { 33 e.printStackTrace(); 34 } 35 36 //接收到信息就關閉 37 try{ 38 39 if (reader !=null) { 40 reader.close(); 41 } 42 if (socket !=null) { 43 socket.close(); 44 } 45 46 }catch (IOException e) { 47 e.printStackTrace(); 48 } 49 } 50 51 public static void main(String[] args) { 52 ServerSocketTest tcp = new ServerSocketTest(); 53 tcp.getserver(); 54 55 } 56 57 }
啟動這個類的main函數,就相當於啟動了這個服務器。如下圖所示。
Jmeter部分:
Jmeter的下載安裝配置我就不詳細介紹了,網上可以找到很多教程。
打開bin文件夾,打開名為ApacheJmeter的jar包。等待jmeter啟動。
會看到一個測試計劃,可以重命名。
右鍵測試計劃,新建線程組——右鍵線程組--添加--sampler--tcp取樣器——右鍵tcp取樣器,添加監聽器。
一個框架大概就做好了。
在線程組裏設置線程數,總時間和循環次數,我分別設置的是4,8,1
在tcp取樣器中添加服務器的ip地址和端口號,設置連接和響應時間。
點擊左上角選項——函數助手對話框——選擇功能__RandomString——長度填50,下一行輸入生成字符串的範圍。如1234567890qingjun,再下一行不用填。
——點擊生成,可以拷貝函數到tcp取樣器要發送的文本裏,然後按回車空一行,不然發送不成功。
點擊右上角的黃色警示圖標可以看到jmeter運行情況。
點擊綠色三角啟動,或者左上角運行--啟動。
jmeter:
結果樹:綠色√表示成功了。
匯總報告:
服務器顯示:
由簡入繁,但最後明白了大道至簡。總之第一步成功了。
開心。
接下來的學習總結還會發布在博客園,希望自己能堅持下去。
Jmeter(1):使用TCP取樣器與socket接口進行簡單通信