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

avec Java Discussion :

Réception UDP et test de chaine


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Réception UDP et test de chaine
    Bonjour à tous,
    J'ai fait un programme de réception UDP dont voici une partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     socket.receive(data);
     String CH=new String(data.getData());
     String go=new String("GOGOGO");
     
     System.out.println("Data recieved : " + CH);
     System.out.println("Data expected : " + go);
     
     if (CH.equals(go)) {System.out.println("OK");}
    Grâce à une autre programme, je lui envoie la chaine attendue GOGOGO, voici la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Data recieved : GOGOGO
    Data expected : GOGOGO
    Je précise que je suis certain d'envoyer "GOGOGO" sans retour à la ligne.
    Pour quoi le test ne passe-t-il pas ? (Ya-t-il un moyen de regarder chaque octet d'une chaine ?)

    Merci d'avance !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    J'aurai tendance à dire que si le test en passe pas c'est qu'il y a un caractère non visible au bout de la chaine.
    Sinon en méthode pour regarder chaque octet d'une chaine de caractères, il y a toCharArray().

    Tu peux aussi vérifier la taille de la chaine que tu reçois.

  3. #3
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Essaye d'afficher le résultat de compareTo
    http://java.sun.com/j2se/1.3/docs/ap...va.lang.String)

    Ca te donnera déja un indice de plus.

    Sinon vérifie que c'est bien "O" (la lettre) dans "GOGOGO" et pas 0 (le chiffre) ca arrive souvent !

    PS : pas de majuscules pour nommer ta variable CH (convention en java)
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses, même si cela ne m'a pas fait trop avancé.
    Le toCharArray() ne donne rien de plus, et compareTo je n'ai pas réussi à m'en servir.
    En revanche, j'ai utilisé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     String go=new String("GOGOGO");
     System.out.println("Data recieved : " + ch + ch.getBytes());
     System.out.println("Data expected : " + go + go.getBytes());
    et ça me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Data recieved : GOGOGO
    Data expected : GOGOGO[B@addbf1
    Je vois pas trop ce que c'est mais je cherche, il s'agit d'un caractère invisible au moins c'est certain. Si vous avez des suggestions allez y !

  5. #5
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Tu peux nous donner le code du truc qui remplit l'objet data ?


    et regarde la taille de ton buffer dans la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatagramPacket data = new DatagramPacket(buffer,buffer.length);
    (parce que je suppose que t'as ça juste avant le receive...)
    vérifie que tu as bien mis la meme taille dans l'emetteur
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    De plus,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     System.out.println("Data recieved : " + ch + ch.length());
     System.out.println("Data expected : " + go + go.length());
    donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Data recieved : GOGOGO
    Data expected : GOGOGO6

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Ah merci c'était la taille du buffer en réception en effet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     final static int taille = 6;
     final static byte buffer[] = new byte[taille];
    Ceci corrige le problème.
    Mais n'y a-t-il pas un moyen de l'adapter à la taille du paquet que l'on reçoit ?

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

Discussions similaires

  1. test si chaine numerique
    Par babalastar dans le forum C++
    Réponses: 3
    Dernier message: 21/04/2009, 16h10
  2. pb réception UDP avec transfert rapide
    Par loup_precaire dans le forum Réseau
    Réponses: 4
    Dernier message: 23/03/2009, 21h22
  3. Test sur chaine de caractères
    Par yaya0057 dans le forum Jasper
    Réponses: 2
    Dernier message: 26/11/2008, 11h25
  4. Test de chaine de caractère dans les $_POST[]
    Par arnogb69 dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2008, 09h35
  5. test sur chaine de caractères.
    Par pseudobidon57 dans le forum Linux
    Réponses: 2
    Dernier message: 15/02/2007, 08h43

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