关于使用不可靠的UDP实现可靠的传输

电脑杂谈  发布时间:2020-06-13 13:16:29  来源:网络整理

udp 可靠传输_json传输图片_udp传输图片

整理此日志. 我希望将来会有时间实现自定义UDP协议. 在许多情况下,我需要UDP的某些功能,并且希望UDP在可接受范围内尽可能稳定. 如果可以实现一个相对通用的类库来实现这一目标,那么需求将大大简化. (重复轮子)

以下是确保UDP传输稳定性的常用方法. 您可以根据需要选择实施部分. 所有实现都等同于在应用程序层再次重新实现TCP.

1,超时重传

2. 有序接受

3. 答案确认

json传输图片_udp传输图片_udp 可靠传输

4. 滑动窗流控制

(1)发送机制

首先设计最重要的可靠性. 在将报头添加到UDP之前,我们首先定义一个8字节的协议报头,它是2字节的数据包标识符udp传输图片,2字节的传输序列号,2字节的文件指针位置和2字节的数据关于大小的信息数据包中的数据. 数据包标志指示该数据包是文件数据包,确认包或其他控制包. 发送序列号用于指示数据包的序列信息. 指针定位字节数据用于指示数据包中数据在文件中的何处填充. ,最终大小信息还用于读取和写入文件数据.

发送的一般过程:

我在这里考虑: 继承QUdpSocket并重新实现写接口. 在这两种情况下,在简单的情况下,请尝试让接收者仅将错误消息发送回发送者一次,而无需重新传输. 在复杂情况下,每个分包合同都要求接收方返回收货确认书,如果未收到,则重新发送

udp传输图片_udp 可靠传输_json传输图片

int writeMessage(MessageType类型,QString数据)

{

head =类型+ sendNumber + packgeNumber + dataSize

// type指示是否发送数据类型文件或信息

// sendNumber用于将数据分成几个数据包

json传输图片_udp 可靠传输_udp传输图片

// packgeNumber当前是软件包的数量

// dataSize信息大小

写头+数据

}

(2)接收机制

udp传输图片_udp 可靠传输_json传输图片

1. 在简单的情况下:

在接收到所有数据包和结束包之后,接收端以错误的包头顺序重新排列它们. 接收过程只需要确保序列号从小到大,否则会发生错误.

2. 在高可靠性下:

文件信息包被接收端接受后,使用确认机制确定是否接受文件,并将决定反馈给发送端. 此时,如果发件人收到“确定接受”的结果,它将过去发送该文件的所有数据集.

在这里,我们不像最传统的可靠传输协议TCP协议. 对于每条消息,我们必须在处理下一条消息之前确认接受. 当接受这组消息时,接收端将遵守无序重排机制. 接收过程只需要确保序列号从小到大udp传输图片,否则会引起错误,并向发送端回复错误的报文序列号.

发送端会延迟发送所有消息,然后发送结束消息. 延迟时间是为了减少结束消息早于数据消息被接受的情况. 当然,即使发生这种情况,也不会破坏可靠性. 但是,结束消息之后的数据消息将被视为丢失的数据包并重新发送,从而降低了效率. 接收到结束消息后,接收端将初始文件信息包的信息与序列号进行比较,并将没有序列号的消息的信息发送回发送端,请求重发. 发送端收到信息后,将重新发送丢失的数据包. 在接收端收到的消息与信息匹配之前,接收端可以发回“已接受”消息. 这样,发送端和接收端将执行下一个文件传输.

将来会在实际实现时对特定的自动重传机制,请求重传机制和确认机制进行补充.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-244161-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 胡飞
        胡飞

        美国没有预料到的是

      • 李宜炎
        李宜炎

        平时手机电量都能用一天

      • 陈娜
        陈娜

        中国是一个爱好和平的国家

        • 寝陵
          寝陵

          一是日本经过明治维新全民造舰的浪潮

      热点图片
      拼命载入中...