ftp问题

zscedu 2011-06-21 05:07:04
自己写的ftp程序从服务器上下载东西,下载完后本地文件与服务器上的文件大小一样,内容有时候会不一样,这是怎么回事呀?并且程序里面也有断点续传的处理
...全文
152 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
zscedu 2011-06-23
  • 打赏
  • 举报
回复
如果在ftp续传过程中,文件重定位不成功,那我就一直重定位,直到成功为止可不可以呢?
lishengkai 2011-06-23
  • 打赏
  • 举报
回复
把你下载的那部分代码贴出来看看嘛 问题出在哪标注下
ws4028196 2011-06-22
  • 打赏
  • 举报
回复
就安静的绿卡时间 阿萨德
zscedu 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lishengkai 的回复:]
RFC文档中对FTP的规定很多的,不同的服务器实现不同
从工作模式来说分为主动和被动模式两种,这个对传输的数据内容没什么影响

然后就是传输模式:流模式、块模式、压缩模式。如果是你自己的客户端你首先要确认下服务器是支持哪集中传输模式的,流模式是默认的模式,文件下载下来直接写盘没问题;压缩模式现在主要都是用zlib库对数据进行压缩后再传输的,如果是你自己的客户端那你就要在你写盘之前对数据进行解……
[/Quote]
恩,谢谢了,我再找找吧
lishengkai 2011-06-22
  • 打赏
  • 举报
回复
RFC文档中对FTP的规定很多的,不同的服务器实现不同
从工作模式来说分为主动和被动模式两种,这个对传输的数据内容没什么影响

然后就是传输模式:流模式、块模式、压缩模式。如果是你自己的客户端你首先要确认下服务器是支持哪集中传输模式的,流模式是默认的模式,文件下载下来直接写盘没问题;压缩模式现在主要都是用zlib库对数据进行压缩后再传输的,如果是你自己的客户端那你就要在你写盘之前对数据进行解压操作,不然会是乱码;块模式现在现网上用的比较少,它是将数据分成一个一个的数据块进行传输,每个块包含一个块头,你下载后要对数据块进行解析才能得到正确的数据。不同的传输模式传输的内容是不一样的,这个对数据内容很有影响

然后就是数据表示类型,RFC规定了四种类型:ASCII类型、EBCDIC类型、二进制文件类型(也叫图像文件类型)、最后一个就是本地类型(local类型)。本地类型我到现在还没搞太明白,说是在不同字节长度的机器之间传输用的,可我还没遇到不是8比特一个字节的机器,这个就先不讨论;ASCII类型出了要注意在UNIX和windows之间传输的时候注意\r\n和\n之间的转换似乎也没太多问题;EBCDIC类型是需要重新编码的,网上自己去找下;二进制的就不用说了。 数据表示类型不对也有可能造成文件内容不对

FTP还有格式控制和三种不同的结构,但是应该不会影响到你的数据,不做讨论
建议你再传输模式和数据表示类型这两个地方去找下原因,我估计是这里的问题,可能你自己的写的客户端需要修改了
AnYidan 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zscedu 的回复:]
引用 14 楼 yanjing12260302 的回复:
1、断点续传的
2、看看在网络传输是按大端还是小端(是不是也考虑在内)

大端小端也会引起有时候一致有时候不一致的情况吗?
[/Quote]

一般来讲网络间传输按字节,如果大端小端不一致,设想一个 wchar 字符在两地的表述方式

1。 如果只是偶尔有几个字节有问题,重点查断点续传的
2。 如果偶尔有几个文件问题,重点查大端小端 或你程序内部对文件的处理方式
至善者善之敌 2011-06-22
  • 打赏
  • 举报
回复
内容都不一样了,还能说啥,肯定程序出问题了
zscedu 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yanjing12260302 的回复:]
1、断点续传的
2、看看在网络传输是按大端还是小端(是不是也考虑在内)
[/Quote]
大端小端也会引起有时候一致有时候不一致的情况吗?
zscedu 2011-06-22
  • 打赏
  • 举报
回复
大侠们,lseek当中文件长度溢出,是不是lseek就要出错了呀?
zscedu 2011-06-22
  • 打赏
  • 举报
回复
我发现是文件重定位出错了?那什么可以引起lseek出错呢?
黎翔 2011-06-21
  • 打赏
  • 举报
回复
1、断点续传的
2、看看在网络传输是按大端还是小端(是不是也考虑在内)
金刚葫芦娃 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zscedu 的回复:]
引用 9 楼 abao623660072 的回复:
从服务器上下载的文件理论肯定没错.

用你自己写的下载一个跟用别的下载下来比较一下, 看问题是否真的出在你写的FTP上.

是我写的ftp有问题了,但像这样的问题会什么引起的呢?
[/Quote]

首先,你写FTP,主要就是连接服务器地址,然后下载,跟文件里内容应该没有多大关系,
自己一步一步跟着打印信息走下看看呢?
看是否去服务器上取文件的文件名发生改变没有.
就想叫yoko 2011-06-21
  • 打赏
  • 举报
回复
很有可能是你断电续传的问题
可以往这方面查查看~
zscedu 2011-06-21
  • 打赏
  • 举报
回复
并且这个两个文件内容不一致,会不定时的出现
zscedu 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 abao623660072 的回复:]
从服务器上下载的文件理论肯定没错.

用你自己写的下载一个跟用别的下载下来比较一下, 看问题是否真的出在你写的FTP上.
[/Quote]
是我写的ftp有问题了,但像这样的问题会什么引起的呢?
金刚葫芦娃 2011-06-21
  • 打赏
  • 举报
回复

从服务器上下载的文件理论肯定没错.

用你自己写的下载一个跟用别的下载下来比较一下, 看问题是否真的出在你写的FTP上.
zscedu 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 justkk 的回复:]
写文件的时候是否采用二进制模式?
传输文件的时候是否采用二进制模式?
[/Quote]
但他有时候是正确的呀
zscedu 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
大小一样,并不代表内容一样啊,a和b都占一个字节,能一样吗
[/Quote]
是呀,那为什么a会变成b呢?从服务器上下载的东西不应该和服务器上的一模一样吗?
luciferisnotsatan 2011-06-21
  • 打赏
  • 举报
回复
用的是不是二进制模式?
downmooner 2011-06-21
  • 打赏
  • 举报
回复
问题问的太笼统。答案也很笼统。。程序有问题
加载更多回复(4)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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