2)loadrunner做winsocket测试的基本步骤:
/*********************************************************************
* Created by Mercury Interactive Windows Sockets Recorder
*
* Created on: Mon Dec 29 09:01:03
*********************************************************************/
#include "lrs.h"
Action()
{
int i;
char *buffer;//定义字符指针
int numberOfBytes;//定义int型变量保存长度
//这是第一步initializes a socket
lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=127.0.0.1:1234",LrsLastArg);
lr_start_transaction("send");
//这里是第二步,通过建立的socket1将buf1中的数据发送给远端MM-7QL3Z0JYUJN6用户,端口2425
lrs_send("socket0", "buf1",  LrsLastArg);
//输出缓冲区数据大小
lrs_send("socket0", buffer,  LrsLastArg);
//从buf2中接收返回的数据
lrs_receive("socket0", "buf2", LrsLastArg);
//取得缓冲区数据
lrs_get_buffer_by_name("buf2", &buffer, &numberOfBytes);
//输出缓冲区数据大小
lr_output_message("The buffer's size is: %d/n", numberOfBytes);
lr_output_message(buffer);
lr_end_transaction("send", LR_AUTO);
//第三步关闭释放socket连接
lrs_close_socket("socket0");
return 0;
}
  上面的代码的注释很明确了,不过需要注意一点的是,loadrunner中lrs_send中的缓存的buf需要在data.ws中定义,不能是程序中定义的字符串。
  data.ws
  ;WSRData 2 1
  send buf0
  recv buf1 101
  recv buf2 210
  recv buf3 300
  -1
  3)对winsocket编程的一些函数的解释
  ①lrs_set_send_buffer("socket0",send_loginStr,strlen(send_loginStr));
  lrs_set_send_buffer将程序中定义的字符串放入data.ws第一个定义的send bufx中,如上面的data.ws中定义的为buf0,则是将其方式buf0中,不管调用多少次,都是放入到buf0中。
  ②lrs_receive("socket0", "buf1", LrsLastArg);
  lrs_get_last_received_buffer("socket0",&login_recv,&login_recvlen);
  buf1定义的长度与实际接收的长度不一致没关系,loadrunner只会在输出中输出一个警告信息,但是不会影响实际接收的数据。警告信息为: Mismatch in buffer's length (expected 101 bytes, 222 bytes actually received, difference in 121 bytes)