liofz 发表于 2012-4-8 14:30:33

为什么lr的socket脚本不能取得服务器返回值?

本帖最后由 liofz 于 2012-4-8 14:33 编辑

以下是脚本:
#include "lrs.h"

Action()
{
int rc;
rc=lrs_create_socket("socket0","TCP","LocalHost=0","RemoteHost=10.2.9.202:24048",LrsLastArg);
if(rc==0){
   lr_output_message("Socket端口成功链接");
}
else{
   lr_output_message("打开socket端口失败,Error Code: %d",rc);
}
lrs_send("socket0","buf0", LrsLastArg);//发送第一个位长报文
lrs_send("socket0","buf2",LrsLastArg);//发送交易报文
lrs_receive("socket0", "buf3", LrsLastArg);//接收位长报文
lrs_receive("socket0", "buf4", LrsLastArg);//接收交易应答报文
lrs_save_param("socket0","buf2","paramm",0,-1);
lr_output_message("返回报文:%s",lr_eval_string("<paramm>"));
if(strcmp(lr_eval_string("<paramm>"),"交易成功")==0){
lr_output_message("socket业务成功完成",LR_PASS);
}
else{
lr_output_message("socket业务失败",LR_FAIL);
}
lrs_close_socket("socket0");
return 0;
}

交易是一个C/S架构的C#.net软件登录部分,发送报文分为两次,第一次发送一个七位字符串指明交易报文的长度。然后程序XML并解析,解析后进行验证并生成业务验证报文,同样是先发回一个七位字符串指明正文长度,然后发回应答正文。
这个脚本中buf0、buf2均通过监控服务器软件运行日志证实发送成功,软件已经处理。
通过TCP抓包工具证实已经有服务器应答返回。
但是buf3、buf4接收报文均为空,接收0字节且打印报文为空。

请问有什么原因会造成lr不能接收应答?????
页: [1]
查看完整版本: 为什么lr的socket脚本不能取得服务器返回值?