早知道这么麻烦就用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吃屎,我也吃屎