我在C中编写了一个应用程序,它使用WinSockets将数据从发送者应用程序传输到接收器应用程序,并且我用选择性重复替换了停止等待算法,我现在卡住了。
据我所知,您需要发送一个数据包窗口并等待所有这些数据包的确认,并在确认一些数据包之后继续发送更多数据包。接收器在收到正确的数据包后立即发送确认消息。
但是,我无法看到我应该如何收到发件人方面的确认。在发送数据包之后立即进行recvfrom会有效地将其更改为停止等待。你对如何进行有任何建议吗?谢谢!
答案 0 :(得分:0)
您有一个正确的想法,即带有可滑动的数据包窗口。 我建议您允许接收方对ACK的确认不只是单个数据包/序列号。
这样,发送方可以以有限的最大值保持几个数据包的传输。 发送者不必为每个发送的数据包而停下来等待,但可以继续发送最多数量的数据包,而不必等待。
如果接收方在发送方达到最大数量之前进行了确认,则不会等待:)
编辑:
这个人有一些不错的想法,并附有代码:http://gafferongames.com/tags/networking