java实现UDP的可靠传输

早知道这么麻烦就用Python写了

核心需求:

把input.txt的内容按标准输入流用发送端Alice读出来,然后丢进模拟丢包和数据损坏的传输类里,之后传输到接受类Bob,接受类再用标准输出流输出到文件里。

(注,标准输入输出流值得是,直接java xxx input.txt)这种参数跟后面的shell用法

先说一下思路,参考了csdn前辈的写法

Alice(发送端):

1.先把文件读入,存进字节数组

2.起三条线程

A线程负责第一次的传输,在传输之前把数据切片,发送过后,同时把包塞进去消息队列。

B线程负责只要消息队列里的消息还在,就不断重复发送

C线程,接受Bob发来的确认收到消息,跟消息队列里的消息对比,如果确认对方收到就移除消息队列里的对应消息

Bob(接收端)

1.接受文件,使用checksum(校验和,此处使用的是md5校验,Javase自带的)校验包的合法性,如果合法,以包里带的seq为key丢进map,同时发ack(确认消息)给Alice

2.一旦接受到结尾符信号(表明传输完成)则,判断map里的所有数据切片是否都接受齐全,如果不齐全,则一直循环判断map等都全了,再一次写入文件

一积分意思一下,妈的CSDN吃屎,我也吃屎

源码(如果不能被下载,说明在审核)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值