51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3161|回复: 6
打印 上一主题 下一主题

[原创] FTP关联

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-6-25 16:29:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我闲着没事翻译的,不对的请指证


下面一部分描述如何关联FTP协议的端口
问题:
传输数据的过程包括建立数据连接,选择适当端口传递参数. 用户和服务器

的数据传输有默认的端口. 客户端默认的数据传输端口和协议连接的端口

是一致的。 服务器的数据传输端口和协议的默认端口是相近的.

一个FTP应用端口可以指定一个非默认的端口来传输数据。在这种情况下,

每次是用不同的连接来接受数据。所以关联就是必需的了。


处理方法:
由于问题在于主机可以指定端口来传输数据。客户端和服务端都是

用默认的端口。数据是用一个32位的主机地址和一个16位的TCP端口地址串在一起的。这个地址是用小数点来分开的独立的四个8位字符。端口的命令

可能如下所示。

端口 h1, h2, h3, h4, p1, p2

p1 表示前八位的端口字符

p2 表示后八位的端口字符

p1 & p2 可以在Buf10中参数化。

得到主机的地址和端口后,按高低位的字符解析主机端口,并把它们放到

变量中去,在data.ws中的相应的位置参数化这个端口。用lr_save_string

保存这个被参数化了的变量。



例子:
/****************************************************************

*****

* Created by Mercury Interactive Windows Sockets Recorder

* Created on: Sat Apr 15 21:55:23

*****************************************************************

****/

#include "lrs.h"

Actions ()

{

     char *NewPort;

     char *UserBuf;

     char Buf[255];

     char Tmp[255];

     int iVal, iHighVal, iLowVal;

     lr_think_time(12);

     lrs_send("socket2", "buf8", LrsLastArg);

     lrs_receive("socket2", "buf9", LrsLastArg);

     lrs_create_socket("socket3", "TCP", "LocalHost=0",
               "Backlog=1", LrsLastArg);

     /* 在socket3中得到本地主机的端口 */

     NewPort = lrs_get_socket_attrib("socket3", LOCAL_PORT );

     lr_output_message("Local port %s", NewPort);

     /* Parse NewPort to low and high order and save to 'PortNum'

parameter */

     iVal = atoi (NewPort);

     iLowVal = (WORD)(iVal) & 0xFF;

     iHighVal = (WORD)(((DWORD)(iVal) >> 8) & 0xFF);

     strcpy (Buf, itoa( iHighVal, Tmp, 10 ));

     strcat (Buf, ",");

     strcat (Buf, _itoa( iLowVal, Tmp, 10 ));

     /* Save the PortNum to buf 10.

     * send buf10

     * "PORT 199,203,74,132,<PortNum>\r\n"

     * The first 4 numbers are the IP and the fifth argument must

be
     * replaced with the new parameter.*/

     lr_save_string(Buf, "PortNum");

     /* Get the content of Buf10 and print to output for debug */

     lrs_get_static_buffer("socket2", "buf10", 0, -1, NULL);

     UserBuf = lrs_get_user_buffer("socket2");

     lr_output_message("Buf10 Content %s", UserBuf);

     lrs_send("socket2", "buf10", LrsLastArg);

     lrs_receive("socket2", "buf11", LrsLastArg);

     lrs_send("socket2", "buf12", LrsLastArg);

     lrs_receive("socket2", "buf13", LrsLastArg);

     lrs_set_accept_timeout(30,0);

     lrs_accept_connection("socket3", "socket4");

     lrs_close_socket("socket3");

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

     lrs_close_socket("socket4");

     lrs_receive("socket2", "buf15", LrsLastArg);

     return 0;

}


----------------------------------------------------------------

----------------

[ 本帖最后由 Zee 于 2006-6-25 22:14 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-6-26 09:16:16 | 只看该作者
收藏
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-6-26 09:43:34 | 只看该作者
thanks~~~
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-6-26 11:30:47 | 只看该作者
自己加精把。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-6-27 10:37:55 | 只看该作者
不错
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-7-20 13:41:48 | 只看该作者
顶楼主,呵呵。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-7-20 13:56:20 | 只看该作者
楼主是做什么的?
好象真的很闲~~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-28 03:46 , Processed in 0.068001 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表