IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Transfert de fichier par le protocole UDP [Problème de congestion]


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut Transfert de fichier par le protocole UDP [Problème de congestion]
    Bonjour,

    Je dois transmettre un fichier d'un programme java à un autre en utilisant le protocole UDP (et donc les DatagramSocket). Afin de m'assurer que mon fichier garde tout son sens, je dois vérifier que les trames transmises, et matérialisant le fichier, arrivent bien et dans l'ordre. Je simule donc le comportement du protocole TCP en acquittant chacunes des trames dans lesquelles se décomposent mon envoi.
    Concrètement, dans le programme d'envoi, j'ai un Thread 1 qui tourne pour envoyer la dernière trame non acquittée, et un Thread 2 qui reçoit les
    acquittements et qui met à jour la variable derniereTrameAcquittee (attribut de la classe Thread 1).
    Alors dans le cadre de "petits" fichiers, tout se passe convenablement, mais lorsque je m'attaque à des fichiers beaucoup plus gros (de l'ordre de 800 Ko), outre le fait que le transfert est plus long (inévitable), j'ai un problème lorsque le nombre d'octets encoyés cumulés avoisine les 40 000 octets.
    Ca ressemble fort à un problème de congestion...
    Ma question est : est-il possible de décongestionner ce port d'une façon ou d'une autre (depuis l'émetteur ou le recepteur) ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Points : 199
    Points
    199
    Par défaut
    En envoyant les datagrammes moins vite?

    Au maximum, tu envoie combien de trames sans attendre d'acquittement?

    Si tu détecte une chute de débit, le comportement typique est de ne plus rien envoyer, puis de repartir à un rythme de nbTrameMax/2 trames, attente d'acquitement, puis on re-augmente petit à petit.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    J'envoie des trames de 8192 octets, et je n'ai pas de nombre d'envois sans réponse maximum. Je fait un Thread.sleep(valeur); où valeur est mon nombre de trame envoyées sans aucune réponse. Donc théoriquement, moins on reçoit de réponse, plus on attend avant de renvoyer.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    tu ne peut pas utilisé TCP ? car la tu vas réinventé la poudre

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Oui je sais bien, d'autant que c'est moins fiable que TCP mon affaire...

    Mais l'utilisation d'UDP est une contrainte du projet

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    alors pour ca il faut que tu te renseigne sur les système de contrôle de la congestion de TCP et que tu le reproduise

    prend slow-start c'est simple

    par contre c'est quoi qui te fait dire que tu a un problème de congestion ?

Discussions similaires

  1. Réponses: 17
    Dernier message: 15/05/2007, 19h35
  2. transfert de fichier par method post
    Par firejocker dans le forum Langage
    Réponses: 6
    Dernier message: 09/06/2006, 14h44
  3. [FTP] transfert de fichiers utilisant le protocole ftp
    Par ista9im dans le forum Langage
    Réponses: 1
    Dernier message: 30/09/2005, 17h49
  4. Transfert de fichiers par sockets
    Par Kaori dans le forum C++
    Réponses: 19
    Dernier message: 26/01/2005, 14h58
  5. Transfert de fichier par ftp
    Par schub1015 dans le forum MFC
    Réponses: 3
    Dernier message: 14/01/2004, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo