繁体   English   中英

如何判断插座是否已连接?

[英]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的角度来看,您的代码中还有一些非常奇怪的约定。 您似乎在等待代码中的服务器响应时将用户思考时间视为延迟,这可能表明该工具的使用存在概念性问题。 您对集合点的使用是普遍使用模型的关键指标,在该模型中,使用该工具可以打破最终用户到达和离开不同时间点的混乱性质。

您可以执行以下操作:

  1. 启用错误继续
  2. 检查套接字属性
  3. 禁用继续出错

例如

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM