首先,我想解释一下为什么我要实现UDP协议,我这样做有几个原因:
我基于这篇文章:
https://gafferongames.com/post/reliability_ordering_and_congestion_avoidance_over_udp/
但是我在“Acks”部分崩溃了,我无法理解传输可靠数据包的方式。我做的是:
忽略我已经实现的虚拟连接id字段(我忽略了具有不同id的包,因此服务器只接受来自授权客户端的包,并且客户端只接收来自服务器的包,因为它已经有ip来过滤it),到目前为止这是包的标题:
[sequence]
[ack]
客户端和服务器脚本中的差异声明(以-1开头,因此在发送第一条消息时计数从0开始):
var seq_local = -1
var seq_remote = -1
客户端A向服务器B发送消息,然后数据包的头部将具有字段“sequence = 0”和字段“ack = 0”,然后B将接收该数据包并检查if是这样的:
if seq_recvPacket> seq_remote:
seq_remote = seq_recvPacket
并将向客户端发送“确认”消息,如下所示:
sequence = seq_local_server
ack = seq_remote_server
我无法弄清楚ack的使用位置。如果您检查的是“序列”字段。