c语言tcp实现网络断点续传,简单实现tcp/ip下的文件断点续传

Array.link({""name1"":Type.isNumber, ""name2"":

Type.isString,.....})MRMY

勤奋是时候的主人,懈怠是时候的奴隶。 其实在tcp/ip和谈中传输文件可以包管传输的有效性,但有一个题目文件传了一项目组连接不测断开了如何;那这种景象只能在从头连接后持续传输,因为文件那项目组已经传了那项目组没有完成并不是tcp/ip的局限,所以须要本身来制订和谈达到到这个目标。实现这个续传的和谈制订其实也是很是简单,经由过程和谈把文件按块来划分,每完成一个块就打上一个标识表记标帜;即使是连接断了经由过程标识表记标帜状况就知道还须要传那些内容。下面经由过程beetle来实现一个简单断点续传的法度(包含办事端和客户端)。

真谛面前,谬论站不住脚,阳光之下,暗影躲不住身。 在实现之前先收拾一下贱程思路,起首提交一个发送恳求信息包含(文件名,块大小,块的数量等),等对方确认后就进行文件块发送,对方接管块写入后返回一个标识表记标帜,然后再持续发直到所有发送完成。思路明白后就制订协了:

文件传输申请信息

public class Post:MessageBase

{

public string FileName;

public long Size;

public int PackageSize;

public int Packages;

public Post()

{

FileID = Guid.NewGuid().ToString("N");

}

}

public class PostResponse : MessageBase

{

public string Status;

}

FileID这个值是用来协同工作的,两端按照这个ID来找到具体操纵的文件和相干信息;Response供给了一个Status属性,可以用来供给一个错误的描述,若是无有任何值的景象申明对方容许这个行动.

文件块传输信息

public class PostPackage:MessageBase

{

public byte[] Data;

public int Index;

}

public class PostPackageResponse : MessageBase

{

public int Index;

public string Status;

}

文件块传输也是一个恳求,一个应答;分别带的信息就是块数据信息和块的地位,同样也是按照Status信息来标识表记标帜块的处理惩罚是否成功。

布局定义完成了,那就进行逻辑处理惩罚项目组;不过为了调用更便利还须要封装一些器材,如按照块大小来划分文件块的数量,获取某一文件块的内容和写入文件某一些的内容等功能。

public static int GetFilePackages(long filesize)

{

int count;

if (filesize % PackageSize > 0)

{

count = Convert.ToInt32(filesize / PackageSize) + 1;

}

<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值