关于LR中lrs_accept_connection函数中获取data.ws中端口号问题解决方法

发表于:2007-12-03来源:作者:点击数: 标签:loadrunnerlr
使用Winsocket录制一个脚本时,脚本中有lrs_accept_connection("socket0","socket1“)函数,根 据网上的说法找到socket0的端口2839,并且也获取后保存为参数(格式是11,23)了,可是在data.ws的buf中去找原端口号用参数代替 时,原端口数据有点奇怪用text显
使用Winsocket录制一个脚本时,脚本中有lrs_aclearcase/" target="_blank" >ccept_connection("socket0","socket1“)函数,根 据网上的说法找到socket0的端口2839,并且也获取后保存为参数(格式是11,23)了,可是在data.ws的buf中去找原端口号用参数代替 时,原端口数据有点奇怪用text显示是\x17E但用binary是.E。这样的情况要如何替代?

        1、找到lrs_create_socket("socket6".....)在该语句下添加
   /* 获取创建socket6时,创建的本地端口号5030(每次回放时该端口都会变)
newport=lrs_get_socket_attrib("socket6", LOCAL_PORT);

lr_save_string(newport, "newport0");

lr_output_message("Local port%s",newport);

        2、接下来添加语句
   /* 将该端口号分解成高位19和低位166(19*256+166=5030),并将转换后的在转换成16进制13和a6
ival=atoi(newport);

ilowval=(WORD)(ival)&0xff;

ihighval=(WORD)(((DWORD)(ival)>>8))&0xff;

strcpy (buf0, itoa( ihighval, tmp, 16 ));

lr_save_string(buf0, "portnum0");

strcpy (buf, itoa( ilowval, tmp, 16 ));

lr_save_string(buf, "portnum");

        3、在lrs_create_socket("socket6".....)下lrs_create_socket("socket7".....)的最 近的sent语句中的data.ws中的buf去找到要替代的端口号,用参数portnum0和portnum将其替代
        (替代时在参数名前加上十六进制的表示法\x);还要在data.ws中找到所有该端口号
        (如何在Data.ws中找要替换的端口号:该端口号在找到的buf中的你机器的ip地址后如:\x0f\xa6 替换成:\x{portnum0}\x{portnum};在data.ws中搜索\x0f\xa6,将其全部替换。)

        4、屏蔽该语句lrs_accept_connection("socket6", "socket9")

        5、将lrs_accept_connection("socket6", "socket9")该语句下最近的lrs_create_socket中的端口号用参数newport代替;并将该语句下所有的
socket9用最近的lrs_create_socket(以newport为参数代替端口号)中的socket代替

        注:只要出现lrs_accept_connection的地方都按以上步骤代替

原文转自:http://www.ltesting.net