首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 问一个关于写文件的问题**************** [已结贴,结贴人:god_sun]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • god_sun
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-24 10:35:42 楼主
    想做个断点续传文件的小程序,就利用tcp来实现。
    问题是比如server发文件to client,大文件就分批次发,是我client收到一个包就写文件。

    现在假如我在穿文件的过程中断开,或者关闭client。 那么这个时候当然没有fclose(fp,那我之前写的数据是不是都没了?

    那怎么能断点续传呢?client也就没法告诉server已经收到了多少了?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chlaws
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 10:47:501楼 得分:3
    去看这
    http://hansong.bokee.com/708253.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qmm161
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 10:48:012楼 得分:3
    不太清楚,server是不是应该一开始就把文件的大小传过来,迅雷或者emule下载的时候一开始都是先知道了文件大小的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kingstarer
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 11:03:533楼 得分:3
    从服务器获取数据到差不多的时候就应该把内容往文件中写入啊

    这样即使客户端突然关了,数据也不会丢失,当然在写文件的同时要写日志文件

    这样下次打开时才好知道下载到哪了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • god_sun
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:25:144楼 得分:0
    引用 1 楼 chlaws 的回复:
    去看这
    http://hansong.bokee.com/708253.html

    原理我知道。现在问题不是原理是什么~!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • god_sun
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:26:045楼 得分:0
    引用 2 楼 qmm161 的回复:
    不太清楚,server是不是应该一开始就把文件的大小传过来,迅雷或者emule下载的时候一开始都是先知道了文件大小的


    确实啊,我就是这样的做的,server先发送个文件信息给客户端。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • god_sun
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:30:546楼 得分:0
    引用 3 楼 kingstarer 的回复:
    从服务器获取数据到差不多的时候就应该把内容往文件中写入啊

    这样即使客户端突然关了,数据也不会丢失,当然在写文件的同时要写日志文件

    这样下次打开时才好知道下载到哪了


    差不多是什么意思?我现在就是收到一次就写文件一次。我的问题是当我写文件的时候,我突然强制关闭客户端,这时当然没有fclose,文件会不会有数据~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fiveofhearts
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:38:177楼 得分:4
    写文件是你客户端程序打开的吧,你客户端程序关闭了,好像文件就fclose了,应该有数据的。不过楼主你测试一下吧,应该很好解决的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • butabuta528
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:42:228楼 得分:4
    会有数据的,执行了fwrite只要不是强制关闭电源,哪怕进程意外结束了,数据还是可以写入的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cang0lang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:57:249楼 得分:3

    你可以自己定义一个简单的协议来表示请求断点续传。
    我以前用socket写过一个ftp传输,支持断点续传的,
    你向ftp服务器发送这个: strTemp.Format( _T("REST %ld"), NewStartLen );  NewStartLen 表示断点位置
    ftp就会给你断点续传,

    你也可以定义一个类似的。。。当服务器受到这种指令时,你就从给的那个数据做起点位置传输数据。。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved