2013-05-02 93 views
0

我正尝试在java中创建一个客户端,以使用回退N滑动窗口通过UDP传输文件。我正在使用TftpPacket,但这与问题无关。我的问题是我怎样才能做出承认控制。例如:在java上创建回滚N滑动窗口客户端

有一个文件被分成15段,窗口的长度为10.因此,首先发送10个segm,但包2丢失,客户端发送10个segm,服务器只承认第一个,所以客户端发送segm 11并停止。在超时之后,客户端再次发送,但是这次的窗口将从段2到段11(10段窗口)定义,依此类推。

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

回答

0

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

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