0

Go-back-N スライディング ウィンドウを使用して UDP 経由でファイルを転送するために Java でクライアントを作成しようとしています。私は TftpPacket を使用していますが、それは質問には関係ありません。私の問題は、どのようにして承認制御を行うことができるかということです。例:

15 セグメントに分割されたファイル、長さ 10 のウィンドウがあります。したがって、最初に 10 セグメントを送信しますが、パッケージ 2 が失われるため、クライアントは 10 セグメントを送信し、サーバーは最初のもののみを確認したため、クライアントはセグメント 11 を送信し、停止します。タイムアウトの後、クライアントは再び送信しますが、今回のウィンドウはセグメント 2 からセグメント 11 (10 セグメント ウィンドウ) までで定義されます。

私の問題は、ウィンドウを制御する方法を理解できないため、最後に受信した ack が 1 の場合はセグメント 11 でブロックし、タイムアウト後にウィンドウ全体を再送信することです。

4

1 に答える 1

0

OOPに関してあなたは間違った方法で考えていると思います。その長さをコンストラクターの属性として設定できるクラスが必要Windowです。1 つは Sender クラスがパケットを送信するときに残りのセグメントを減らすためのメソッド、もう 1 つは Receiver が確認応答を送信するときに残りのセグメントを拡張するためのメソッドです。

メインクラスでは、パケットを送信し、ウィンドウにスペースが残っているかどうかを毎回確認します。パケットを送信するたびに、そのremainingSegments属性を削減する Window オブジェクトのメソッドを呼び出します。受信クラスから確認を受信した場合は、そのremainingSegments属性を拡張する Window オブジェクトのメソッドを呼び出します。

于 2013-05-02T00:21:15.870 に答える