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

Entrée/Sortie Java Discussion :

Problème de récéption ou d'envoi de Trame UDP


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut Problème de récéption ou d'envoi de Trame UDP
    Bonjour, à tous, voici un problème dont je n'arrive pas à résoudre...

    Je fais une sorte de communication entre deux Client A et B.

    Le protocole UDP est utilisé ici.

    Le client A envoie un trame X1 au Client B.
    Le client B traite la trame X2 et puis envoie une Trame X3 au Client A
    Le client A traite la trame X3 et puis envoie une Trame X4 au Client B
    Le client B traite la trame X4 et puis envoie une Trame X5 au Client A

    Le problème est qu'il faut envoyer plusieurs fois la Trame...

    Le client A envoie une seul fois la trame X1 au Client B--> Reussi
    Le client B doit envoyer trois fois la trame X2 au client A pour qu'il recoit une seul fois la trame X2.
    Le client A doit envoyer deux fois la trame X3 au client B pour qu'il recoit.
    le Client B doit envoyer 3-4fois la trame X4 au client A --> Echec....

    Pourquoi quand j'envoie un trame, dès fois il ne recoit pas ou il faut l'envoyer plusieurs fois!!

    Voici mes méthodes SendUDP et ReceUDP (Récéption UDP), je ne pense pas que ca soit le problème mais je le met quand même


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
       public void SendUDP(String IP,String Port,String Data)
            {
                try
                {
            InetAddress address = InetAddress.getByName(IP);
            DatagramSocket socket = new DatagramSocket();
            byte[] buf = new byte[500];
            buf=Data.getBytes();
            DatagramPacket packet = new DatagramPacket(buf,buf.length,address, Integer.parseInt(Port));
            socket.send(packet);
            System.out.println("\n Message Envoyé"+IP+":"+Port+"  Donnee"+Data+"\n");
            socket.close();   
                }
                catch (Exception e) { System.out.println("Erreur d'envoie"+e+"\n"); }
            }
     
            public String ReceUDP(String Port)
            {        
          try{  DatagramSocket socket = new DatagramSocket(Integer.parseInt(Port));
            System.out.println ("Attente d'une réponse \n");
            byte[] buf = new byte[500];
            DatagramPacket packet = new DatagramPacket(buf,buf.length);
            socket.receive(packet);
            String Data = new String(packet.getData());
     
            String toto1[]=Data.split("\n");
            System.out.println("Voici le message de réponse:"+toto1[0]);
            socket.close();
            return toto1[0]; 
          }
          catch (Exception e)
          {
              String Data="";
              System.out.println("Warning Probleme ReceUDP "+e+"\n");
              return Data;
          }
     
            }
    J'ai vérifié les adresses IP et les ports, il y a aucun problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SendUDP("192.168.1.5","5010",dString2+"\n");//Marche pas
      SendUDP("192.168.1.5","5010",dString2+"\n");// Marche pas
      SendUDP("192.168.1.5","5010",dString2+"\n");// Ca marche
    Si je l'envoie trois fois comme ca, le client recoit au moins une trame,mais si j'envoie deux fois ca marche pas.

    Sinon j'ai programmé en désactivant mon firewall et mon antivirus... Pas de changement. En théorie les ports 5000 et 5010 ne sont pas pris.

    Le coté positif de tout ça est la création de nouveau expression:
    To Trame or Not to Trame, that is the question?
    Donc si quelqu'un a une solution pour m'aider! (Désolé du pavé)

  2. #2
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    J'ai pas regardé ton code, mais j'ai une question a te poser, pourquoi tu utilises UDP???
    UDP est un protocole ou il n'y a aucune reprise des pertes contrairement à TCP. En gros si il y a une erreur lorsque tu envoie un paquet UDP, et bah il est perdu a jamais. Alors que si c'est avec TCP il sera retransmis jusqu' a ce que t'on destinataire le recoive.
    Vu que tu envoies plusieurs fois des trames UDP, je suppose que tu veux que ton destinataire recoive absolument la trame. Donc mon conseil, change de protocole, utilise TCP. Ceci dit tu as l'air d'etre sur un reseau local et un taux d'erreur aussi eleve me semble etrange et donc il doit y avoir un pbm quelque part...

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    Alors c'est pour un projet scolaire que je dois faire et il faut absolument que les trames sont de UDP.

  4. #4
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Ok donc tu as pas le choix sur le protocole.
    Verifie que celui qui attend la trame et bien lancé avant celui qui l'envoie.
    Essaye aussi de faire gérer chaque action par un thread des qu'un paquet est reçu. Sinon a première vu rien ne semble ne pas fonctionner dans ton code. Dernier point, y a t'il une autre activité sur ton réseau a part ton programme Java ?

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    ouep j'ai vérifié a chaque fois le client attend la trame avant d'envoyer une trame.

    C'est comme une sorte de ping pong, le Client A envoie une donnée et le Client B attend l'envoi puis envoie une autre trame.
    Autre activité sur mon réseau .. ben pour le moment non..

    Mais si je met un sleep avant chacun envoie , je pense que ca devrait marcher je vais tester ca demain matin

    Merci Scorpyosis pour essayer de m'aider

    Bonne nuit à tous , la nuit porte conseil

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 59
    Points
    59
    Par défaut
    Alors j'ai mis des Thread.Sleep(500) et ... ca marche nickel , donc envoyer trop de trame UDP envoyé en un laps de temps trop court, ca massacre les trames UDP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'envoi de trame
    Par vallgui dans le forum WinDev
    Réponses: 8
    Dernier message: 22/05/2007, 10h36
  2. Problème d'envoi de trames
    Par skeltryx dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 16h16
  3. Problème d'envoi de trames
    Par skeltryx dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/03/2007, 15h14
  4. problème de frame et d'envoi de valeur
    Par mosca_coroneja dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2006, 17h42
  5. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 01h26

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