C++编写FTP客户端解析LIST命令获取目录不完整,求解。

李迟
博客专家认证
2011-08-01 04:28:05
背景:
C++编写一FTP客户端,对FTP协议、文章等约了解一些。现在需要列出服务器某目录的文件(及目录),服务器已经完善,不需修改——准确说,服务器是一个硬盘,可以通过FTP访问、操作。

现在上传文件功能已经完成,但列表功能一直出现问题。

LIST命令通:
发送LIST命令(有回应信息)->创建、连接数据连接通路(其中也包括PASV命令),读取该通路上的数据(得到的即目录、文件名称),关闭->回应信息。
示例:
227 Entering Passive Mode (172,18,222,100,16,171).
150 Opening ASCII mode data connection for file list
此处为文件名称
226 Transfer complete.

但是,接收的数据不完整(有时完整)。目前目录文件不多,开辟空间为2048,暂时足够。单步调试时,发现该缓冲区中有完整数据,也能正常输出。但直接运行程序的话,接收不完整。

另外,关闭LIST数据连接后,再次接收命令回应信息(即上面出现的226 Transfer complete.之类的),出现阻塞,用select的话,超时。

向各位大牛请教,如果可以完整接收服务器的文件列表?后期可能会有很多文件列表在同一个目录中,不过目前连几个文件名称都显示不完整。

或许我的思路出路,大家可以说说自己的思路;
或许是代码某些问题,我可以贴代码;
或许是其它问题。

在下向各位请教了。

...全文
503 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jernymy 2011-08-16
  • 打赏
  • 举报
回复
使用TCP模式?
send
recv
最好有回应模式
客户端,服务器。
while (1)
{
recv();
if (...)
{
send();
}
}
松月 2011-08-16
  • 打赏
  • 举报
回复
不懂C++
cool_knife123 2011-08-16
  • 打赏
  • 举报
回复
顶一下了,不知所云!
LIXIYO 2011-08-16
  • 打赏
  • 举报
回复
呵呵,我是看了楼主的http://topic.csdn.net/u/20110815/16/57f9cd87-4651-42e0-a6fa-1535cb18af50.html
过来,瞅瞅的~
shakusi 2011-08-16
  • 打赏
  • 举报
回复
菜鸟路过,顶
ONE-PIECE 2011-08-15
  • 打赏
  • 举报
回复
纯属接分!!!!!!!!!!!
zijideid 2011-08-15
  • 打赏
  • 举报
回复
踩着楼主脚印过来的
  • 打赏
  • 举报
回复
哈哈 都来了啊
lanmao_123 2011-08-15
  • 打赏
  • 举报
回复
路过,顶
kruskaluu 2011-08-15
  • 打赏
  • 举报
回复
petrie 2011-08-15
  • 打赏
  • 举报
回复
帮结贴 哈哈
KidLeaf2 2011-08-15
  • 打赏
  • 举报
回复
菜鸟来了
louyong0571 2011-08-15
  • 打赏
  • 举报
回复
单步的时候完整,直接跑不完整?
会不会是网络接收方面的问题,试试看直接跑的时候直接抓包,是不是有些包漏掉了。
呵呵
皮特张 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pittzhangswing 的回复:]

帮顶
[/Quote]
皮特张 2011-08-15
  • 打赏
  • 举报
回复
帮顶
devin_jia 2011-08-15
  • 打赏
  • 举报
回复
只会Java,只能帮你顶了.t
tom6103215 2011-08-15
  • 打赏
  • 举报
回复
只会Java,只能帮你顶了
果-果 2011-08-15
  • 打赏
  • 举报
回复
友情UP,呵呵
saber_li 2011-08-15
  • 打赏
  • 举报
回复
不懂,帮顶,接分,,,
qq290032431 2011-08-15
  • 打赏
  • 举报
回复
不懂,帮顶,接分,,,
加载更多回复(2)

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧