最近在写一个FTP的客户端软件,功能包括上传和下载文件,查询文件,断点续传,删除,重命名等等,以前没有写过FTP,开始还不明白FTP的协议什么的,后来写了才知道其实也没什么,就一TCP协议,一发一接,一一对应,不同的命令对应不同的功能.不清楚的开始可以找一个软件,然后通过抓包工具可以看到对应的命令服务器返回的是什么内容,下面是一些常用的命令:
1.用户名...................(USER)
* 2.口令.....................(PASS)
* 3.认证.....................(ACCT)
* 4.改变工作目录.............(CWD)
* 5.回到上一层目录...........(CDUP)
* 6.结构加载.................(SMNT)
* 7.重新登录.................(REIN)
* 8.退出登录.................(QUIT)
* 9.数据端口.................(PORT)
* 10.被动....................(PASV)
* 11.类型....................(TYPE)
* 12.文件结构................(STRU)
* 13.传输模式................(MODE)
* 14.获得文件................(RETR)
* 15.上传文件................(STOR)
* 16.唯一保存................(STOU)
* 17.附加....................(APPE)
* 18.分配....................(ALLO)
* 19.重新开始................(REST)
* 20.重命名..................(RNFR)
* 21.重命名为................(RNTO)
* 22.放弃....................(ABOR)
* 23.删除....................(DELE)
* 24.删除目录................(RMD)
* 25.创建目录................(MKD)
* 26.打印工作目录............(PWD)
* 27.列目录..................(LIST)
* 28.站点参数................(SITE)
* 29.系统....................(SYST)
* 30.状态....................(STAT)
* 31.帮助....................(HELP)
* 32.等待....................(NOOP)
上传的时候要用到:
USSER PASS PASV SIZE REST STOR
续传的时候要先通过SIZE获得文件的大小,然后再用REST把接收文件设在这个大小开始,客户端发送也要手动把文件定位到这个位置开始关送.
下载文件的时候要用到
USSER PASS PASV REST RETR
同样道理,要把两头的文件定位到续传的位置和接收的位置.
另外,有些服务器默认是不允许续传的,这个可以通过配置文件来解决,例如 AllowStoreRestart on之类的东西.
代码太长就不帖出来了