51Testing软件测试论坛

标题: LR 实用贴,怎样手动编写Winsocket 脚本 [打印本页]

作者: guirongb    时间: 2006-12-13 15:25
标题: LR 实用贴,怎样手动编写Winsocket 脚本
有时候,使用LR录制的winsocket脚本一长串,我根本不知道它在干什么,一个简简单单的登入请求竟然录制了上千个Event
在这种情况下,我希望自己手动编写 Winsocket 脚本,把我需要的请求发送出去,然后,等服务器回应就行了


举个简单的例子
一个网络电子词典,从客户端发送要翻译的单词,服务器端翻译并返回结果(这个例子是自己C++ 练手写的,不怎么灵光,要源代码的话,可以给我发消息)

模拟客户端的LR代码如下:

#include "lrs.h"

Action()
{
    char acTest[10];
    char acSend[10];
    char* pcTest3;
     
    //发送指定的数据包
    lrs_create_socket("socket0", "TCP", "RemoteHost=127.0.0.1:5150",  LrsLastArg);
  
   
  
      memset(acTest,0,10);
      sprintf(acTest,"<dict>\r\n");
      lr_output_message("out value : %s",lr_eval_string(acTest));
     
      strcpy(acSend,lr_eval_string(acTest));
      lr_output_message("the Send Value is %s" ,acSend);   
      lrs_set_send_buffer("socket0",acSend,strlen(acSend));

      lrs_send("socket0", "buf0", LrsLastArg);
   
    //接受服务器信息,并将信息打印出来
   
      lrs_receive("socket0", "buf1", LrsLastArg);
      pcTest3=lrs_get_received_buffer ("socket0", 0, -1, NULL);
      lr_output_message(pcTest3);
     
     
      return 0;
}

1、我对发送的单词作了一个 Dict的参数化。
2、将这个参数化的单词取出后发送到服务器端。
3、在 data.ws 中添加如下 BUFF
send  buf0 8
"n \r\n"
recv  buf1 8
"  \n"
实际上发送的是 你取出的那个单词,但是,在data.ws 中依然需要注明这两个空的BUFF

这样就完成了手工编写winsocket 的脚本,简单实用。

如果,反应不错的话,我将继续贴深入篇。

[ 本帖最后由 guirongb 于 2006-12-13 15:36 编辑 ]
作者: 恋恋冬季    时间: 2006-12-13 15:31
谢谢楼主~~学习了
作者: picture    时间: 2006-12-13 16:52
楼主思路不错,我前段时间正在搞SOCKERT的脚本,楼主意思我明白了,但具体操作上好象还不太明白,能不能讲的具体点!支持
作者: testeryouyou    时间: 2006-12-13 17:48
顶一个先
作者: rain_wind    时间: 2006-12-14 08:49
谢谢!
作者: Zee    时间: 2006-12-15 00:32
顶帖。
作者: 0709ready    时间: 2006-12-18 23:02
标题: 反映不错
up
作者: oscarli    时间: 2006-12-19 09:39
标题:
!!!!!!!!!!!!!!
作者: leey    时间: 2006-12-19 11:56
先谢谢,同时麻烦lz高手解释一下 lrs_get_last_received_buffer 和 lrs_get_received_buffer的区别,再谢。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2