尝试为我的游戏(由gamemaker:studio制作)开发一个连接到java服务器的可靠udp协议。我需要确保包到达并且它们以正确的顺序到达。
我试图模仿tcp协议来实现这一点,但有一件事让我困惑,那就是三方握手:什么时候发生的?
握手基本上是在你第一次连接到某个东西的时候吗?只做过一次(直到连接断开)
如果是这样的话,那么我在常规数据包上附加了什么数据?
假设我有3个连接的初始数据包: SYN -> SYN-ACK -> ACK
让我们假设一切顺利,我们联系在一起了。
然后假设我想向服务器发送一条消息:“hello”。我基本上在做什么 SYN -> SYN-ACK -> ACK
为了这个消息?我到底在这个消息包/数据报上附加了什么来确保它到达并且按顺序到达?
1条答案
按热度按时间brvekthn1#
然后假设我想向服务器发送一条消息:“hello”。我基本上是在为这个消息做syn->syn ack->ack吗?
不,包是免费传送的。
我到底在这个消息包/数据报上附加了什么来确保它到达并且按顺序到达?
您可以在数据包中添加一个序列号,并以编程方式对它们重新排序:如果您收到数据包1、2、3和5,则必须等待数据包4。
我需要确保包到达并且它们以正确的顺序到达。
如果您同时需要重新传输和有序到达(并且可能避免重复),那么很难通过编程方式对tcp做得更好!