ftp命令解析过程的描述

来源:百度知道 编辑:UC知道 时间:2024/05/25 01:06:05
同题 请教各位大侠
在FTP内部 命令到底是如何进行解析得到想要的操作 中间要经历那些具体过程
大侠们可以以一个命令为例 画个流程图 或描述下
谢谢先~~

FTP客户端是由2个TCP连接的。
一个只用来发送命令的!!!!
另外一个是用来接收/发送数据的!

就比如TYPE I命令~
客户端会先把这命令加上\r\n即:"TYPE I\r\n" 发送到服务器
服务器收到这命令后会进行解析!再采取相关的处理!
至于如何解析,我想各个服务器的过程都不见的是一样的。这个没有标准的!你可以先把命令和后面的操作分开,它们之间是有空格空开的!
然后直接用strcmp("TYPE", command)对比咯,如果==0再看后面的是I还是A了!

如果你是要闻如何得到该命令那要看以下:
客户端先要连接服务器
SOCKET ftpSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//TCP连接,此连接用于发送命令
SOCKADDR_IN socketAddr;
socketAddr.sin_addr.S_un.S_addr = inet_addr(HostName);//ftp服务器IP
socketAddr.sin_port = htons(ftpPort);//默认是21
connect(ftpSocket, (const struct sockaddr *)&socketAddr, sizeof(SOCKADDR_IN))
接收服务器返回命令recv(ftpSocket, (char FAR *)recvBuf, 1024, 0);
发送命令USER user\r\n到服务器 输入用户名(ftp服务器的)
再接收服务器返回命令
发送命令PASS password\r\n到服务器 输入密码

这之后你才能发送别的命令~
比如下载数据命令~发送之后会产生另外一个TCP连接传送文件,文件传送完之后会关闭~