我正在用C语言编写一个应用程序,它使用WinSockets将数据从发送方应用程序传输到接收方应用程序,并且我用选择性重复替换了停止等待算法,这让我陷入了困境。
我知道您需要发送一个数据包窗口,然后等待所有数据包的确认,然后在一些数据包得到确认后继续发送更多的数据包。接收器在接收到正确的分组之后立即发送ack消息。
然而,我看不到我应该如何在发送者端接收确认。在发送数据包后立即执行recvfrom将有效地将其更改为停止并等待。你对如何继续有什么建议吗?谢谢!
发布于 2018-07-19 15:16:28
使用包的滑动窗口,您的想法是正确的。我建议您允许接收方确认多个数据包/序列号。
这样,发送方可以在有限的最大值下保持多个数据包在传输中。发送者不必停止并等待每个发送的数据包,但可以在必须等待之前继续发送最大数量的数据包。
如果接收方在发送方达到最大值之前确认,则不会有等待:)
编辑:
这个家伙有一些很好的想法和代码:http://gafferongames.com/tags/networking
https://stackoverflow.com/questions/50358109
复制相似问题