基于UDP的可靠性数据传输服务——设计与实现

来源:互联网 发布:随机滚动抽奖软件 编辑:程序博客网 时间:2024/05/14 02:11

1 前言

LZ这学期在外面交换,又重学了一遍计算机网络,发现它的课程项目设计得非常好。如题是第二个课程项目,在UDP上设计实现一个可靠性数据传输服务(不是TCP,只提供基本的可靠性数据传输服务)。


2 实现方案

  • 有限状态机实现收发方交互逻辑(见附图)。
  • 收发缓存设计:发送方发送缓存主体为一个循环队列(存放数据),同时配置一个链队列维护每个segment的信息(如序列号,数据量,与循环队列配合使用)。接收方缓存为一个固定大小的结构体数组。

// rUDP_sender:       typedefstruct       {              charbuf[MAXNUM];              intfront, rear;       }QueueBuf;             //Buffer Information Management       //linked queue       typedefstruct // element type       {              intseqnum = 0;              intlength = 0;       }Info;      typedef structnode       {              Infoinfo;              node*next = NULL;       }InfoNodeType;        typedefstruct       {              InfoNodeType*front;              InfoNodeType*rear;       }BufInfoManagLq;      // rUDP_receiver:       typedefstruct{              intseqnum;              int payload_len;              char seg[sizeof(Segment)];       }RecvNode;             typedefstruct{              intindex = 0;              RecvNoderecv_array[10];       }RecvBuf;

  • 开一个线程执行有限状态机任务。

 

3 说明

核心框架是一个发送类和一个接收类(收发分别实现的单工版本),可以提供类似于tcp socket的API和最基本的可靠性数据传输服务。

 且:无数据截断,无快速重传,初始序列预定义,序列号不循环使用。


4 附图




5 源码

LZ从不吝惜这些源码,供网络编程初学者学习研究。戳这里……

1 0