我正在尝试用java创建一个客户端,以便使用返回N滑动窗口通过UDP传输文件。我使用的是TftpPacket,但这与问题无关。我的问题是我如何才能进行确认控制。示例:
有一个分成15个段的文件,窗口长度为10。所以首先它将发送10段,但是包2丢失了,所以客户端发送10段,服务器只确认第一段,所以客户端发送段11并停止。在超时之后,客户端再次发送,但这次的窗口将被定义为从segm 2到segm 11 (10个segm窗口),依此类推。
我的问题是,我不能理解如何控制窗口,所以如果最后收到的ack是1,它就会阻塞在segm 11上,并在超时后重新发送整个窗口。
发布于 2013-05-02 08:21:16
我认为您在OOP方面的思考方式是错误的。您应该有一个Window类,您可以在其中将其长度设置为构造函数中的一个属性,并且有两个方法,一个用于在发送方类发送数据包时减少剩余段,另一个用于在接收方发送回包时扩展剩余段。
在主类中,发送数据包,每次检查窗口中是否有剩余空间。每次发送数据包时,都会调用减少其remainingSegments属性的窗口对象的方法。如果从接收类收到确认,则调用扩展其remainingSegments属性的窗口对象的方法。
https://stackoverflow.com/questions/16328387
复制相似问题