- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FTP服务的LIST指令获取的文件列表信息的解析客户端使用LIST命令指定获取服务器端FTP共享目录(或者下面的子目录),服务器端将通过数据端口将该指定目录下的文件列表(包括子目录)信息发送给客户端。本文对该文件列表信息进行分析和解析。文件列表信息分为UNIX格式和DOS格式两种。笔者是比照了Serv-U和微软自带的FTP服务器写出本文的,也许别的服务器另有新的方式或者格式也说不定,欢迎大家补充。首先不妨来看一下UNIX格式和DOS格式下的文件列表信息都是怎么样的:?//MS-DOS文件列表格式解析?//02-23-05? 09:24AM???????????????? 2245 readme.ESn?//05-25-04? 08:56AM????????????VC.ESn??UNIX文件列表格式解析??UNIX文件格式:??Serv-U:??-rwxrw-r--?? 1 user???? group??????? 3014 Nov 12 14:57 cwinvnc337.ESn??-rwxrw-r--?? 1 user???? group?????? 20480 Mar? 3 11:25 inmcsvr更新说明.ESn??-rwxrw-r--?? 1 user???? group???????? 450 Apr 13 11:39 对话框中加入工具条.ESn??Windows自带FTP:??-rwxrwxrwx?? 1 owner??? group???????May 25? 2004 VC.ESn??-rwxrwxrwx?? 1 owner??? group???????????? 450 Apr? 6 15:04 对话框中加入工具条.ESn注:由于未发现Serv-U支持DOS格式,因此DOS格式只列了微软自带的。下面我们对以上的格式进行分析:首先,文件列表信息中,每个文件的信息之间用回车换行符(\r\n)分隔。因此分解时第一步就是用\r\n进行截取。然后是对每一个文件信息的解析。每一个文件信息中,分为多个信息段,各个信息段之间用一个空格符间隔。UNIX格式和DOS格式的信息段的数量的顺序是不同的。下面将分别分析。先看看DOS格式,拿出一条文件信息来讲:02-23-05? 09:24AM???????????????? 2245 readme.ESn第一段为05-25-04,一个空格后,为第二段08:56AM,一个空格后,为???由于文件长度不一定,预留的位置比较长,因此前面用空格填充了。解析的时候,逐段用空格截取,记住,截取完第一段后,剩下的内容先用TrimLeft去除左侧的空格,然后继续截取就可以了。因此,DOS格式共分四段,其中第一段为日期,第二段为时间,第三段为文件长度,第四段为文件名称。对了,如果只需要获取文件名称,你也不能从后面截取,因为文件名称是允许带空格的。:》另外,如果列举的是个目录,那么,第三段就不是文件长度了,而是固定为:DIR再看UNIX格式,也拿出一条文件信息来讲:-rwxrw-r--?? 1 user???? group??????? 3014 Nov 12 14:57 cwinvnc337.ESnunix我不熟,每一段的意义不太清楚。但以上的格式分解为:第一段为-rwxrw-r--,第二段为1,第三段为user,第四段为group,第五段为文件长度,第六段为月,第七段为日,第八段为时间,第九段为文件名称。需要注意的是:如果格式串的第一个字符为d,表示为一个目录信息,比如drwxrw-r-- 另外,第八段有可能不是时间,而是年份,比如2005,从上面的例子中你可以发现。对于不同的FTP服务器,LIST获取的信息不尽相同,但段的顺序和意义是不变的。只是表示文件的长度的段的长度有所不同。以下是笔者在实际项目中的解析函数,做的不是很好,但希望对大家有所帮助吧。/***************************************************?Function:??CRecvFileMan::PraseFileList_MSDOS?Description:?解析MSDOS风格的文件列表?Table Accessed:??Table Updated:??Parameter:??CString sFileList - MSDOS风格文件列表?Return:???无返回值?Others:???***************************************************/void CRecvFileMan::PraseFileList_MSDOS(CString sFileList){?CString s
文档评论(0)