2013-05-02 2 views
0

J'essaie de créer un client en Java pour transférer des fichiers via UDP en utilisant une fenêtre glissante Go-back-N. J'utilise un TftpPacket, mais ce n'est pas pertinent pour la question. Mon problème c'est comment puis-je faire le contrôle d'acquittement. Exemple:Création d'une fenêtre glissante Go-back-N Client sur Java

Avoir un fichier qui est divisé en 15 segments, fenêtre de longueur 10. Donc d'abord il enverra 10 segm, mais le paquet 2 est perdu pour que le client envoie 10 segm et le serveur a seulement reconnu le premier, alors le client envoie segm 11 et s'arrête. Après le timeout, le client envoie à nouveau mais la fenêtre sera cette fois définie de segm 2 à segm 11 (fenêtre de 10 secondes) et ainsi de suite.

Mon problème est que je ne suis pas en mesure de comprendre comment contrôler la fenêtre de sorte qu'il bloque sur segm 11 si le dernier accusé de réception reçu était de 1 et renvoyait toute la fenêtre après le timeout.

Répondre

0

Je pense que vous pensez d'une mauvaise façon en termes de POO. Vous devriez avoir une classe Window où vous pouvez définir sa longueur en tant qu'attribut dans le constructeur et avoir deux méthodes, une pour réduire les segments restants lorsque la classe Expéditeur envoie un paquet et une pour étendre les segments restants lorsque le récepteur envoie un accusé de réception .

Dans votre classe principale, vous envoyez des paquets, en vérifiant chaque fois si vous avez de la place dans votre fenêtre. Chaque fois que vous envoyez un paquet, vous appelez la méthode de l'objet Window qui réduit son attribut remainingSegments. Si vous recevez un accusé de réception de la classe de réception, vous appelez la méthode de l'objet Window qui étend son attribut remainingSegments.

Questions connexes