[英]How do I judge whether the socket is connected or not?
我正在使用HP Loadrunner测试套接字协议程序,现在我将一些十六进制系统发送到服务器,但是我不知道该套接字是否已连接,我将脚本粘贴到下面
#define _EOF '#'
#include "lrs.h"
Action()
{
char *recvbuf;
int recvlen=0;
int rc;
lr_think_time(1000);
lr_start_transaction("Trans_socket");
lrs_set_recv_timeout (1,500);
lr_start_transaction("Conn_socket");
rc = lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.10.110:10001", LrsLastArg);
lr_output_message("rc=%d",rc);
if (rc != 0 )
{
lr_end_transaction("Conn_socket", LR_FAIL);
lr_end_transaction("Trans_socket", LR_FAIL);
return 0;
}
lr_end_transaction("Conn_socket", LR_PASS);
lr_rendezvous("trace");
lrs_send("socket0","buf0", LrsLastArg);
lrs_receive ("socket0","buf1",LrsLastArg);
lrs_get_last_received_buffer ("socket0",&recvbuf,&recvlen);
if(recvlen==58)
lr_end_transaction("Trans_socket", LR_PASS);
else
lr_end_transaction ("Trans_socket", LR_FAIL);
lrs_send("socket0", "buf2", LrsLastArg);
lrs_receive("socket0", "buf3", LrsLastArg);
lrs_send("socket0", "buf4", LrsLastArg);
lrs_receive("socket0", "buf5", LrsLastArg);
lr_think_time(100);
lrs_send("socket0", "buf6", LrsLastArg);
lr_think_time(1000);
lrs_receive("socket0", "buf7", LrsLastArg);
lr_think_time(1000);
lrs_send("socket0", "buf8", LrsLastArg);
lrs_receive("socket0", "buf9", LrsLastArg);
lrs_close_socket("socket0");
return 0;
}
,但我不知道该插座是否已连接
现在该聘请一位曾在那里做过的套接字程序员了。
从loadrunner的角度来看,您的代码中还有一些非常奇怪的约定。 您似乎在等待代码中的服务器响应时将用户思考时间视为延迟,这可能表明该工具的使用存在概念性问题。 您对集合点的使用是普遍使用模型的关键指标,在该模型中,使用该工具可以打破最终用户到达和离开不同时间点的混乱性质。
您可以执行以下操作:
例如
char* peer;
lr_continue_on_error(1);
lrs_create_socket("socket1", "TCP", "LocalHost=0", "RemoteHost=fakehost", LrsLastArg);
peer =lrs_get_socket_attrib("socket1", REMOTE_ADDRESS );
if (peer == NULL){
lr_message("Not connected");
}else{
lr_message("Connected");
}
lr_continue_on_error(0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.