0

我正在尝试在 java 中创建一个客户端,以使用 Go-back-N 滑动窗口通过 UDP 传输文件。我正在使用 TftpPacket,但这与问题无关。我的问题是我如何进行确认控制。例子:

有一个分为 15 段的文件,窗口长度为 10。所以首先它会发送 10 段,但是包 2 丢失了,所以客户端发送 10 段,服务器只确认第一个段,所以客户端发送 11 段和停止。超时后客户端再次发送,但这次的窗口将从 segm 2 定义到 segm 11(10 segm 窗口)等等。

我的问题是我无法理解如何控制窗口,因此如果收到的最后一个 ack 为 1,它会在 segm 11 上阻塞,并在超时后重新发送整个窗口。

4

1 回答 1

0

我认为您在 OOP 方面的想法是错误的。您应该有一个Window类,您可以在构造函数中将其长度设置为属性,并具有两种方法,一种用于在 Sender 类发送数据包时减少剩余段,另一种用于在 Receiver 发送确认时扩展剩余段。

在您的主要课程中,您发送数据包,每次检查窗口中是否还有空间。每次发送数据包时,都会调用减少其remainingSegments属性的 Window 对象的方法。如果您收到来自接收类的确认,则调用扩展其remainingSegments属性的 Window 对象的方法。

于 2013-05-02T00:21:15.870 回答