- 0
- 0
- 约1.66万字
- 约 14页
- 2026-01-08 发布于北京
- 举报
一、编写FTP服务器:
二、连接协议:
所有ftp协议没有2进制数字,全部用文本格式收发。发送协议:协议号+
描述+CRLF例如:DELEIndex.html\r\n接收协议:协议键+描述+
CRLF例如:250删除成功\r\n其中,协议号和协议键是关键字,不能随
意变换。#defineCRLF\r\nCRLF作为校验使用,因此是必须出现在发
送或者接收字串的结尾。发送长度必须等于strlen或者string.length。
发送长度也是校验条件之一。协议键不区分大小写予以处理。例如:创建
ftp端口21,使用IE浏览器执行登录。收到Accept连接后立即返回
Send1,使用Receive接收你将收到Recv2。依次向下收发,得到的
测试结果如下:Send1=220FtpDforfreeRecv2USERtest
Send3=331Passwordrequiredfortest.Recv4PASStestSend5=230
Usertestloggedin,proceedRecv6optsutf8onSend7=502
CommandOPTSutf8onnotimplementedRecv8systSend9=215
WindowsRecv10sitehelp
一、编写FTP服务器:
二、连接协议:
所有ftp协议没有2进制数字,全部用文本格式收发。
发送协议:协议号+描述+CRLF例如:DELEIndex.html\r\n”
接收协议:协议键+描述+CRLF例如:”250删除成功\r\n”
其中,协议号和协议键是关键字,不能随意变换。
#defineCRLF“\r\n”
CRLF作为校验使用,因此是必须出现在发送或者接收字串的结尾。
发送长度必须等于strlen或者string.length。发送长度也是校验条件之一。
协议键不区分大小写给以处理。
例如:创建ftp端口21,使用IE浏览器执行登录。
收到Accept连接后立即返回Send1,使用Receive接收你将收到Recv2。
依次向下收发,得到的测试结果如下:
Send1=220FtpDforfree
Recv2=USERtest
Send3=331Passwordrequiredfortest.
Recv4=PASStest
Send5=230Usertestloggedin,proceed
Recv6=optsutf8on
Send7=502CommandOPTSutf8onnotimplemented
Recv8=syst
Send9=215Windows
Recv10=sitehelp
发送11=502命令SITEhelp未实现接收12PWD发送13=257/是
当前目录接收14CWD/subing/发送15=250/subing/是当前目录。
接收16TYPEA发送17=200类型设置为ASCII。接收18PASV
发送19=425无法打开数据连接(30创建失败)接收20=
TYPEA发送21=200类型设置为ASCII。接收22PORT
127,0,0,1,4,226发送23=200PORT命令正确。接收24LIST发送
25=150正在打开ASCIINO‑PRINT模式数据连接用于ls‑l。三、协议
内容:每一个协议都是一个判断分支语句,得到是或否的结果后再返
回(发送)
。
1、接收:
收到连接请求,根据对方的IP判断是否允许。是:发送220协议,相关描
述自定义。否:关闭Accept产生的收发套接字
原创力文档

文档评论(0)