最简单的FTP服务器,供大家参考.版本 2
命令文本 = 到大写 (到文本 (服务器1.取回数据 ()))
命令文本 = 子文本替换 (命令文本, #换行符, , , , 真)
.判断开始 (取文本左边 (命令文本, 4) = “USER”) ' 用户名
.如果真 (PASS (命令文本))
服务器1.发送数据 (客户信息, “331 ” + #换行符, )
返回 ()
.如果真结束
服务器1.发送数据 (客户信息, “530 ” + #换行符, )
.判断 (取文本左边 (命令文本, 4) = “PASS”) ' 密码,这里采用匿名的方式登陆
.如果真 (匿名)
服务器1.发送数据 (客户信息, “230 ” + #换行符, )
返回 ()
.如果真结束
服务器1.发送数据 (客户信息, “530 ” + #换行符, )
.判断 (命令文本 = “OPTS UTF8 ON”) ' 路径采用UTF8编码
' UTF8编码 = 真
服务器1.发送数据 (客户信息, “503 ” + #换行符, ) ' 暂时不支持utf8编码
.判断 (命令文本 = “SYST” 或 命令文本 = “SITE HELP”)
服务器1.发送数据 (客户信息, “215 近在眼前 FTP Server” + #换行符, )
.判断 (命令文本 = “PWD”)
服务器1.发送数据 (客户信息, “257 ” + #引号 + 目录 + #引号 + #换行符, )
.判断 (命令文本 = “TYPE A”)
.如果真 (文件号 ≠ 0)
关闭文件 (文件号)
文件号 = 0
.如果真结束
服务器1.发送数据 (客户信息, “200 ” + #换行符, )
.判断 (取文本左边 (命令文本, 3) = “CWD”) ' 改变工作目录
.如果 (取文本长度 (命令文本) > 5)
服务器1.发送数据 (客户信息, “550 近在眼前友情提示:目前还不支持改变目录!” + #换行符, )
.否则
服务器1.发送数据 (客户信息, “250 ” + #引号 + 目录 + #引号 + #换行符, )
.如果结束
.判断 (命令文本 = “PASV”) ' 采用被动方式连接
IP = PASV (端口)
服务器2.端口 = 端口
服务器1.发送数据 (客户信息, “227 Entering Passive Mode (” + IP + “)” + #换行符, )
.判断 (命令文本 = “LIST”) ' 列表
服务器1.发送数据 (客户信息, “150 ” + #换行符, )
发送数据 = 发送列表 (根目录 + 目录)
服务器2.发送数据 (数据客户, 发送数据, )
服务器2.断开客户 (数据客户)
服务器1.发送数据 (客户信息, “226 Transfer complete” + #换行符, )
.判断 (命令文本 = “NOOP”)
服务器1.发送数据 (客户信息, “200 ” + #换行符, )
.判断 (命令文本 = “TYPE I”)
服务器1.发送数据 (客户信息, “200 ” + #换行符, )
.判断 (命令文本 = “SIZE”)
服务器1.发送数据 (客户信息, “421 ” + #换行符, )
.判断 (取文本左边 (命令文本, 4) = “QUIT”)
服务器1.发送数据 (客户信息, “220 再来我揍你!” + #换行符, )
服务器1.断开客户 (客户信息)
.默认
服务器1.发送数据 (客户信息, “550 近在眼前友情提示:暂时不支持该功能!” + #换行符, ) ' 其它命令你们自行扩展,这里暂时屏蔽