zoukankan      html  css  js  c++  java
  • loadunner使用socket协议来实现多客户端连接同一服务器脚本(使用到IP欺骗技术)

    第一部分:

    #include "lrs.h"


    vuser_init()
    {
    lrs_startup(257);

    return 0;
    }

    第二部分:

    Action()
    {

    char *ReturnValue_Remote;
    char *ReturnPort_Remote;
    char *ReturnValue_Local;
    char *ReturnPort_Local;
    char *AcutalBuffer;
    int BufferSize;

    char *ip;

    //编写获取LR分配的Vuser IP函数,将IP保存在ip变量中。
    ip=lr_get_vuser_ip();

    if(ip)

    lr_vuser_status_message("the ip address is %s:",ip);
    else

    lr_vuser_status_message("IP spooler disabled");

    //输出获取到lr分配的ip值。
    lr_output_message("the current assign ip is :%s",ip);

    //将ip变量保存到一个参数中,并输出该参数的值。
    lr_save_string(ip,"VirtualIP");
    lr_output_message( lr_eval_string("{VirtualIP}"));

    //在lrs_create_socket函数中localhost使用<>:<>形式来参数化
    lrs_create_socket("socket0","TCP","LocalHost=<VirtualIP>:<RandomPort>","RemoteHost=192.168.1.113:8888",LrsLastArg);

    while(1)

    {


    ReturnValue_Remote=lrs_get_socket_attrib("socket0",REMOTE_ADDRESS);
    ReturnPort_Remote=lrs_get_socket_attrib("socket0",REMOTE_PORT);
    ReturnValue_Local=lrs_get_socket_attrib("socket0", LOCAL_ADDRESS);
    ReturnPort_Local=lrs_get_socket_attrib("socket0",LOCAL_PORT);

    lr_start_transaction("获取远程主机地址及端口");

    lr_output_message("this RemoteHost address is %s :", ReturnValue_Remote);

    lr_output_message("this RemoteHost Port is %s : ",ReturnPort_Remote);

    lr_end_transaction("获取远程主机地址及端口", LR_AUTO);


    lr_start_transaction("获取本机地址及端口");

    lr_output_message("this LocalHost address is %s :", ReturnValue_Local);

    lr_output_message("this LocalHost Port is %s : ",ReturnPort_Local);

    lr_end_transaction("获取本机地址及端口", LR_AUTO);


    // lr_think_time(3);


    lr_start_transaction("发送数据包");

    lrs_send("socket0","buf0",LrsLastArg);

    lr_end_transaction("发送数据包", LR_AUTO);


    lr_start_transaction("获取BUFF数据大小及内容");

    lrs_get_buffer_by_name("buf0",&AcutalBuffer,&BufferSize);

    lr_output_message("buf0 size is %d :",BufferSize);

    lrs_save_param_ex("socket0","user",AcutalBuffer,0,BufferSize,"ascii","param");

    lr_output_message("the contect buf0 is %s :",lr_eval_string("<param>"));

    lr_end_transaction("获取BUFF数据大小及内容", LR_AUTO);


    }

    lrs_disable_socket("socket0",DISABLE_SEND);

    lrs_close_socket("socket0");

    return 0;
    }

    第三部分:

    #include "lrs.h"


    vuser_end()
    {

    // lrs_disable_socket("socket0",DISABLE_SEND);

    // lrs_close_socket("socket0");

    lrs_cleanup();

    return 0;
    }

    第四部分:

    ;WSRData 2 1

    send buf0 32

    "x41x45x48x50x0Bx00x00x00x01xFFxFF"    ==》心跳包数据
    -1

  • 相关阅读:
    五场面试之后的小结
    玩转ubuntu之初体验
    现阶段规划小结
    高并发秒杀系统--课程总结与思考
    高并发秒杀系统--秒杀高并发分析与解决方案
    高并发秒杀系统--SpringMVC整合
    高并发秒杀系统--Service事务管理与继承测试
    高并发秒杀系统--Service接口设计与实现
    对于你为什么要离职的深入思考
    两场面试之后的小结
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/3802465.html
Copyright © 2011-2022 走看看