51Testing软件测试论坛

标题: 录制ftp,出现的错误提示,不知是什么原因? [打印本页]

作者: lg2014    时间: 2004-9-14 14:27
标题: 录制ftp,出现的错误提示,不知是什么原因?
vuser_init.c(50): Error : callConnect - Connection refused. Error code : 10061.
vuser_init.c(50): Error : Timeout expired while trying to connect. Error code : 9017.


lr:8.0
使用协议:windows sockets
脚本录制在action中

ftp软件是:flashfxp3.0
请各位大侠帮助解析一下。多谢!
作者: sunshinelius    时间: 2004-9-16 12:12
使用ftp协议录制,ftp登陆,浏览,退出仅用了三个函数进行交互,而使用socket录制产生了10多个交互。
不过我分别用ftp协议和winsock协议录制了一下flashfxp 2.0版本,没有你所说的问题。
现在你的问题解决了吗?要是解决了,告诉大家一下吧,是什么原因引起的
作者: pcl2004_27    时间: 2004-9-16 12:56
8.        LoadRunner测试ftp模式的相关经验
什么叫做PASV mode(被动模式传送)?他是如何工作的?
FTP一般有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接。FTP服务程序一般支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode)。

先假设客户端为C,服务端为S.
Port模式:
当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个Port命令后 就会向客户端打开的那个端口N进行连接,这种数据连接就生成了。
Pasv模式:
当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是(服务端S在本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,就可以向服务端S的M端口进行连接,连接成功后,数据连接也建立了。

Actions()
{
char acTest[100];
char acTest2[100];
char* pcTest3;

//生成发送的串
sprintf(acTest,"kkkhhhh\r\n";
//指定发送的串
lrs_set_send_buffer ("socket0", acTest, strlen(acTest));
//发送,由于之前运行了lrs_set_send_buffer,所以这里的"buf0"参数无效
lrs_send("socket0", "buf0", LrsLastArg);

//接收返回的串
lrs_receive("socket0", "buf1", LrsLastArg);
//把返回的串放到变量中
pcTest3=lrs_get_received_buffer ("socket0", 0, -1, NULL);
//对返回串中的数据操作
if (pcTest3[0]=='k')
{
lrs_set_send_buffer ("socket0", pcTest3, strlen(pcTest3));
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
}

//等待一段时间
lr_think_time(6);

return 0;
}

PASV模式

data.ws:

send buf25
"TYPE I\r\n"
recv buf26 20
"200 Type set to I.\r\n"
send buf27
"PASV\r\n"
recv buf28 50
"227 Entering Passive Mode (10,19,119,104,133,58)\r\n"
send buf29
"RETR startweblogic\r\n"
recv buf30 74
"150 Binary data connection for startweblogic (10.3.9.3,2707) (53 bytes).\r"
"\n"
recv buf31 53
"cd ./user_projects/mydomain\n"
"nohup startWebLogic.sh &\n"
recv buf32 31
"226 Binary Transfer complete.\r\n"

Actions:
lrs_send("socket4", "buf25", LrsLastArg);
lrs_receive("socket4", "buf26", LrsLastArg);
lrs_send("socket4", "buf27", LrsLastArg);
lrs_receive("socket4", "buf28", LrsLastArg);
lrs_send("socket4", "buf29", LrsLastArg);
lrs_create_socket("socket6", "TCP", "LocalHost=0", "RemoteHost=10.19.119.104:34106", LrsLastArg);
lrs_receive("socket4", "buf30", LrsLastArg);
lrs_receive("socket6", "buf31", LrsLastArg);
lrs_close_socket("socket6";
lrs_receive("socket4", "buf32", LrsLastArg);

注意其中的buf27,发出PASV命令,server在buf28返回端口号“133,58”,133*256+58=34106,于是client端就有这一句“lrs_create_socket("socket6", "TCP", "LocalHost=0", "RemoteHost=10.19.119.104:34106"”,这里面的34106端口号就是这样计算出来的。以后每次lrs_create_socket的时候,就要从前面的PASV应答包中解出端口号来。

非PASV模式

data.ws:
send buf28
"TYPE I\r\n"
recv buf29 20
"200 Type set to I.\r\n"
send buf30
"PORT 10,3,9,3,11,96\r\n"
recv buf31 30
"200 PORT command successful.\r\n"
send buf32
"RETR startweblogic\r\n"
recv buf33 74
"150 Binary data connection for startweblogic (10.3.9.3,2912) (53 bytes).\r"
"\n"
recv buf34 53
"cd ./user_projects/mydomain\n"
"nohup startWebLogic.sh &\n"
recv buf35 31
"226 Binary Transfer complete.\r\n"

Actions:
lrs_send("socket4", "buf28", LrsLastArg);
lrs_receive("socket4", "buf29", LrsLastArg);
lrs_create_socket("socket7", "TCP", "LocalHost=0", "Backlog=1", LrsLastArg);
lrs_send("socket4", "buf30", LrsLastArg);
lrs_receive("socket4", "buf31", LrsLastArg);
lrs_send("socket4", "buf32", LrsLastArg);
lrs_receive("socket4", "buf33", LrsLastArg);
lrs_accept_connection("socket7", "socket8";
lrs_close_socket("socket7";
lrs_receive("socket8", "buf34", LrsLastArg);
lrs_close_socket("socket8";
lrs_receive("socket4", "buf35", LrsLastArg);


注意,buf30中的“11,96”就是client端监听的端口号,11*256+96=2912,而在此之前,client端是先lrs_create_socket了,也就是说,这个2912是在lrs_create_socket的时候生成的监听端口号,然后用发给server端,让server端连过来。此脚本要正常执行,就必须在lrs_create_socket之后取出socket7的监听端口,然后放到"PORT 10,3,9,3,11,96\r\n"包中(修改11和96),发给server端。
作者: lg2014    时间: 2004-9-17 09:53
标题: 首先多谢斑竹的帮忙,但问题依然存在,我把脚本贴上
存在的问题依然是上述问题,问题出在:标有Q字样的行,其中work,是ftp所在的服务器,录制的依然是flashfxp3。0,协议是winsock
Action()
{
    lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=WORK:21",  LrsLastArg);

    lrs_receive("socket0", "buf0", LrsLastArg);

    lrs_send("socket0", "buf1", LrsLastArg);

    lrs_receive("socket0", "buf2", LrsLastArg);

    lrs_send("socket0", "buf3", LrsLastArg);

    lrs_receive("socket0", "buf4", LrsLastArg);

    lrs_send("socket0", "buf5", LrsLastArg);

    lrs_receive("socket0", "buf6", LrsLastArg);

    lrs_send("socket0", "buf7", LrsLastArg);

    lrs_receive("socket0", "buf8", LrsLastArg);

    lrs_send("socket0", "buf9", LrsLastArg);

    lrs_receive("socket0", "buf10", LrsLastArg);

    lrs_send("socket0", "buf11", LrsLastArg);

    lrs_receive("socket0", "buf12", LrsLastArg);

    lrs_send("socket0", "buf13", LrsLastArg);

    lrs_receive("socket0", "buf14", LrsLastArg);

    lrs_send("socket0", "buf15", LrsLastArg);

    lrs_receive("socket0", "buf16", LrsLastArg);

    Q:  lrs_create_socket  ("socket1", "TCP", "LocalHost=0", "RemoteHost=WORK:41603",  LrsLastArg);

    lrs_send("socket0", "buf17", LrsLastArg);

    lrs_receive("socket0", "buf18", LrsLastArg);

    lrs_receive("socket1", "buf19", LrsLastArg);

    lrs_disable_socket("socket1", DISABLE_SEND);

    lrs_close_socket("socket1");

    lrs_receive("socket0", "buf20", LrsLastArg);

    lrs_send("socket0", "buf21", LrsLastArg);

    lrs_receive("socket0", "buf22", LrsLastArg);

    lrs_disable_socket("socket0", DISABLE_SEND);

    lrs_close_socket("socket0");

    return 0;
}
作者: sunshinelius    时间: 2004-9-17 23:50
楼主,我想你已经找到了问题所在了吧。那个端口号是server产生的,每次可能会不同。所以回放时,再连以前的那个端口号,是连不上的。你可以把端口号从上一个receive buffer中获得。
作者: lg2014    时间: 2004-9-23 09:47
标题: 多谢斑竹!

作者: 啄木鸟    时间: 2004-12-27 16:27
标题: 谁能告诉我这个具体怎么做
Originally posted by sunshinelius at 2004-9-17 11:50 PM:
楼主,我想你已经找到了问题所在了吧。那个端口号是server产生的,每次可能会不同。所以回放时,再连以前的那个端口号,是连不上的。你可以把端口号从上一个receive buffer中获得。




我录制的虽然不是跟楼住一样程序,但遇到的问题是一样的,虽然版主已经解答了,但我还不是很清楚,请知道的人给解答一下,那可是雪中送炭啊!呵呵
作者: zhengaiqi    时间: 2013-5-24 11:43
貌似只有云层知道




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2