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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    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 chevronné 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
    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)

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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 chevronné 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
    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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    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