LR socket协议(收集)
参考文章:
LoadRunner中winsocket协议脚本回放时的mismatch问题处理方法
LoadRunner -Socket报文解析返回的报文并取特定的值
int receive_ex(char* socketID, char* buf) { char flag[50]; char *Buffer; int NumberOfBytes = 0; lr_save_string("","LastReviceData"); memset(flag, 0, sizeof(flag)); sprintf(flag, "NumberOfBytesToRecv=%d", 1000000); lrs_set_recv_timeout2(0,0); lrs_receive_ex(socketID, buf, flag, LrsLastArg); lrs_get_last_received_buffer(socketID, &Buffer, &NumberOfBytes); lrs_save_param_ex(socketID,"received",NULL,0,NumberOfBytes,"ascii","LastReviceData"); //lr_output_message("%s",lr_eval_string("{LastReviceData}")); } void socket_sendAndRec_tran(char* socketName,char* bufName,char* recvBufName,char* tranName) { if(tranName != "") lr_start_transaction(tranName); lrs_send("socket0", bufName, LrsLastArg); receive_ex("socket0", recvBufName); if(tranName != "") lr_end_transaction(tranName, LR_AUTO); } void socket_sendAndRec(char* socketName,char* bufName,char* recvBufName) { lrs_send("socket0", bufName, LrsLastArg); receive_ex("socket0", recvBufName); } void socket_sendAndRecUserIndex(char* socketName,int fromIndex,int toIndex) { int i; char bufName[50]; memset(bufName, 0, sizeof(bufName)); for (i = fromIndex; i <= toIndex; i++) { sprintf(bufName, "buf%d", i); lrs_send("socket0", bufName, LrsLastArg); i++; sprintf(bufName, "buf%d", i); receive_ex("socket0", bufName); } } char* GetReviceXmlData(char* propertyName) { lr_save_string(propertyName,"propertyName"); lr_save_string("","OutputParam"); //lrs_set_receive_option(EndMarker,EndMarker_None); //lr_error_message(lr_eval_string("LB/BIN=<{propertyName}>")); //lr_error_message(lr_eval_string("RB/BIN=</{propertyName}>")); lrs_save_searched_string("socket0",NULL,"OutputParam","LB/BIN=<{propertyName}>","RB/BIN=</{propertyName}>",1,0,-1); //lr_xml_get_values("XML={LastReviceData}","ValueParam=OutputParam",lr_eval_string("Query=/{propertyName}"),LAST); //lr_error_message(lr_eval_string("GetReviceXmlData {propertyName} = {OutputParam}")); return lr_eval_string("{OutputParam}"); } vuser_init() { lrs_startup(257); lrs_create_socket("socket0", "TCP", "RemoteHost=192.168.56.28:8000", LrsLastArg); socket_sendAndRecUserIndex("socket0",0,7); lr_save_string(GetReviceXmlData("d_session_id"),"d_session_id"); lr_save_string(GetReviceXmlData("l_login_id"),"l_login_id"); //lr_error_message(lr_eval_string("Query d_session_id = {d_session_id}")); //lr_error_message(lr_eval_string("Query l_login_id = {l_login_id}")); socket_sendAndRecUserIndex("socket0",8,13); //lrs_create_socket("socket1", "TCP", "LocalHost=0", "RemoteHost=ip:80", LrsLastArg); //socket_sendAndRecUserIndex("socket0",14,15); //lrs_disable_socket("socket1", DISABLE_SEND); //lrs_close_socket("socket1"); //socket_sendAndRecUserIndex("socket0",16,147); return 0; } #include "lrs.h" Action() { char* returnCode; lr_start_transaction("订票"); socket_sendAndRecUserIndex("socket0",152,153); //socket_sendAndRecUserIndex("socket0",144,157); returnCode = GetReviceXmlData("ErrCode"); lr_error_message("dsdsdsds ErrCode = %s",returnCode); if(returnCode[0] != '0') { return -1; } lr_end_transaction("订票", LR_AUTO); //lrs_send("socket0", "buf158", LrsLastArg); //lrs_receive("socket0", "buf159", LrsLastArg); return 0; }
vuser_init() { lrs_startup(257); lrs_create_socket("socket0", "TCP", "RemoteHost=192.168.56.26:30201", LrsLastArg); lrs_send("socket0", "buf0", LrsLastArg); lrs_receive("socket0", "buf1", LrsLastArg); lrs_send("socket0", "buf2", LrsLastArg); lrs_receive("socket0", "buf3", LrsLastArg); lrs_send("socket0", "buf4", LrsLastArg); //lrs_receive("socket0", "buf5", LrsLastArg); //lr_save_string("","LastReviceData"); //memset(flag, 0, sizeof(flag)); //sprintf(flag, "NumberOfBytesToRecv=%d", 2048); lrs_set_recv_timeout2(0,0); lrs_receive_ex("socket0", "buf5", "NumberOfBytesToRecv=2048", LrsLastArg); //t2sdk_receive_ex("socket0", "buf5"); lrs_get_last_received_buffer("socket0", &Buffer, &NumberOfBytes); lrs_save_param_ex("socket0","user",Buffer,0,NumberOfBytes,"ascii","LastReviceData"); lr_error_message("!!!! Buffer=%s", lr_eval_string("")); sprintf(outPut,"%s",lr_eval_string("")); lr_error_message("outPut=%s",outPut); lrs_save_searched_string("socket0",NULL,"paramUser_token","LB=user_token",NULL,1,7,14); lr_error_message("!!!! paramUser_token=%s", lr_eval_string("")); lrs_save_searched_string("socket0",NULL,"OutputParam","LB=user_token",NULL,1,7,14); //lr_error_message("!!!! Buffer=%s", lr_eval_string("")); user_token = lr_eval_string(""); //lrs_receive("socket0", "buf6", LrsLastArg); lr_error_message("!!!! user_token=%s", user_token); //lrs_send("socket0", "buf7", LrsLastArg);*/ return 0; }

浙公网安备 33010602011771号