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的话,超时。

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

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

在下向各位请教了。

...全文
344 22 打赏 收藏 举报
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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)
相关推荐
发帖
Linux/Unix社区

2.2w+

社区成员

Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
帖子事件
创建了帖子
2011-08-01 04:28
社区公告
暂无公告