<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

    LoadRunner—win/websockets通信中獲取數(shù)據(jù)

     過socket進(jìn)行通信的分布式應(yīng)用是比較常見的,包括winsocket和websocket,LR支持這兩個(gè)協(xié)議。
      在使用LR回放socket協(xié)議的腳本時(shí),可能會(huì)經(jīng)常需要獲取服務(wù)器返回的數(shù)據(jù),語句格式如下:
    lrs_create_socket("socket0", "TCP", "RemoteHost=1.2.3.4:12345",  LrsLastArg);
    lrs_send("socket0", "buf0", LrsLastArg);
    lrs_receive("socket0", "buf1", LrsLastArg);
      很明顯,socket0是通信所用套接字,buf0是LR將要發(fā)送給服務(wù)器的內(nèi)容(來自用戶行為),buf1則接收服務(wù)器返回。
      我們經(jīng)常需要通過提取buf1中的內(nèi)容,并適當(dāng)?shù)募右恍喽ㄕZ言,來判斷這個(gè)通信操作有沒有獲取期望的數(shù)據(jù)。經(jīng)常使用函數(shù)lrs_get_last_received_buffer,如下:
      lrs_get_last_received_buffer("socket0", &ActualBuffer, &NumberOfBytes);
      這樣就把lrs_receive接收到的數(shù)據(jù)保存在了內(nèi)存中(指針ActualBuffer指向的一個(gè)有LR自動(dòng)動(dòng)態(tài)分配的內(nèi)存塊),并返回?cái)?shù)據(jù)長(zhǎng)度(保存在NumberOfBytes中)。
      然后就可以像使用用戶自定義的數(shù)組一樣使用該緩沖區(qū),如ActualBuffer[0]。需要注意的是,使用完成后需要手動(dòng)釋放ActualBuffer指向的內(nèi)存,通過調(diào)用lrs_free_buffer。
      下面是一個(gè)簡(jiǎn)單示例,在處理服務(wù)器返回?cái)?shù)據(jù)時(shí),我們將其作為char數(shù)組處理,經(jīng)過驗(yàn)證這是沒問題的。
      完整代碼:
    vuser_init.c
    #include "lrs.h"
    vuser_init()
    {
    lrs_startup(257);
    return 0;
    }
    Action.c

    /*********************************************************************
    * Created by Mercury Interactive Windows Sockets Recorder
    *
    * Created on: Tue Nov 12 14:51:33
    *********************************************************************/
    #include "lrs.h"
    Action()
    {
    int NumberOfBytes=0;
    char *ActualBuffer;
    unsigned char num1,num2,num3,num4;
    unsigned int jifen =0;
    int dj =0 ;
    char * tmp;
    int i=0;
    lrs_create_socket("socket0", "TCP", "RemoteHost=10.15.107.12:12345",  LrsLastArg);
    lrs_send("socket0", "buf0", LrsLastArg);
    lrs_receive("socket0", "buf1", LrsLastArg);
    /* Get the last received buffer and its size. */
    lrs_get_last_received_buffer("socket0", &ActualBuffer, &NumberOfBytes);
    //7B 9C 0B 00 00 0F 00 02 6C 00 00 00 08 00 90 5F 01 00 0D 00 00 00,從第偏移量17取數(shù),直到14,作為積分;偏移量18為等級(jí)。
    lr_output_message("The last buffer's size is:%d/n", NumberOfBytes);
    num1 = ActualBuffer[17];  //最高位
    num2 = ActualBuffer[16];
    num3 = ActualBuffer[15];
    num4 = ActualBuffer[14];  //最低位
    lr_output_message("num1 = %d,num2 = %d,num3 = %d,num4 = %u\n",num1,num2,num3,num4);
    jifen = (num1 / 16 ) * 268435456 + (num1 % 16)* 16777216 + (num2 / 16)* 1048576 +(num2 % 16) * 65536 +(num3 / 16) * 4096 +  (num3 % 16 ) * 256 +(num4 / 16)* 16 + (num4 % 16) * 1; //注意00 90 5F 01是16進(jìn)制格式,其中01(num1)是最高位。
    dj=(int)ActualBuffer[18];
    lrs_free_buffer(ActualBuffer);
    lr_output_message("jifen = %d\n",jifen );
    lr_output_message("dj = %d\n",dj );
    lrs_close_socket("socket0");
    return 0;
    }
    vuser_end.c
    [cpp] view plaincopy
    #include "lrs.h"
    vuser_end()
    {
    lrs_cleanup();
    return 0;
    }

    posted on 2013-12-10 10:53 順其自然EVO 閱讀(1178) 評(píng)論(0)  編輯  收藏 所屬分類: loadrunner

    <2013年12月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产精品久久久天堂 | 亚洲av不卡一区二区三区| 67pao强力打造高清免费| 亚洲精品无播放器在线播放| 伊人久久大香线蕉亚洲 | 久久亚洲AV无码精品色午夜麻| 亚洲一级免费毛片| 免费无码一区二区| 亚洲美女人黄网成人女| 四虎影视永久免费观看| 久久不见久久见免费视频7| 亚洲精品动漫免费二区| 亚洲视频在线播放| 国产gav成人免费播放视频| 最好看的中文字幕2019免费| 黄色a三级免费看| 亚洲国产电影在线观看| 亚洲精品tv久久久久久久久 | 3344永久在线观看视频免费首页 | 亚洲AV无码一区二三区| 四虎最新永久免费视频| 成年免费a级毛片免费看无码| 亚洲午夜在线播放| 亚洲av无码精品网站| 国产在线19禁免费观看国产| 最近中文字幕电影大全免费版 | 亚洲色欲久久久综合网| 日韩免费无砖专区2020狼| 最近中文字幕2019高清免费| xxxxx做受大片视频免费| 亚洲国产精品无码第一区二区三区 | 亚洲人精品亚洲人成在线| 亚洲AV日韩精品久久久久久| 国产精品亚洲不卡一区二区三区| 永久免费的网站在线观看| 一级毛片**不卡免费播| 精品多毛少妇人妻AV免费久久| 美女视频黄a视频全免费网站色 | 亚洲精品国产国语| 亚洲精品人成电影网| 亚洲AV色香蕉一区二区|