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

Java EE Discussion :

Problème client UDP Java, rien ne se passe


Sujet :

Java EE

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Problème client UDP Java, rien ne se passe
    Bonjour a tous, je suis sur un projet pour mon BTS que je doit rendre bientôt et je bloque, je vous explique le problème :

    En java, je doit envoyer une commande AT à un serveur par protocole UDP depuis une tablette Android, je fait donc appel à une méthode, cependant il ne se passe rien, le serveur ne reçois rien. Le but serais de pouvoir au moins communiquer.
    Le serveur -> 192.168.179.1 le port d'écoute -> 5556.
    Je suis plutôt débutant dans ce domaine et j'ai du mal a trouver mon erreur.
    Voici le code de la méthode qui ne fonctionne pas :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    /*-------------------ATTRIBUTS------------------*/
    	static String ip="192.168.179.1";	//  L'adresse IP ou l'on envoie doit etre 192.168.0.1
    	public static String envoiMessage;
    	static String Newligne=System.getProperty("line.separator"); //Pour passer a la ligne utiliser la variable Newligne
    	/*______________________________________________*/
    	/*-------------------METHODES-------------------*/
    	public static void envoi_cmd_input() throws UnknownHostException		//Methode qui permet d'ENVOYER UNE COMMANDE AU DRONE EN UDP
    	{
     
    		InetAddress adresse;
     
    		try {
    			adresse = InetAddress.getByAddress(ip.getBytes());
    			} catch (UnknownHostException e) {
    				e.printStackTrace();
    			}	//transforme l'ip en adresse reseau
    		DatagramSocket socket;
     
    		try {
    			envoiMessage= "AT*REF = "+Commandes.seq+"," +Commandes.value+"\r\n";	//message a envoyer	\r\n
     
    			int taille= envoiMessage.length();	//Taille du message
    			DatagramPacket packet= new DatagramPacket(envoiMessage.getBytes(), taille);	//creation d'un packet IP avec le packet 
    			/*TEST*/
    			envoiMessage= " AT*REF = "+Commandes.seq+"," +Commandes.value+"\r\n";
    	Interface_MainActivity.compteur_seq.setText("envoiMessage contient "+envoiMessage+Newligne+"Depuis la classe Lien");
    						/*fin test*/
    			adresse = InetAddress.getByAddress(ip.getBytes());
     
    			socket = new DatagramSocket(Commandes.port,adresse);
    							Log.d("unTagQueTuSouhaites", "envoi_cmd_input() : Les messages envoyé est : " +envoiMessage+"");//Chat developpez.com
     
    			try
    			{
    				socket.send(packet);
    			} catch (IOException e) 
    			{
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		} catch (SocketException e1) //rennomé en 'e1' anciennement 'e'
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}	//cree une socket udp avec une adresse serveur et port*/
    	}
    Je vous donne aussi ce que m'affiche le logCAT lorsque dans mon application je fait appel a cette méthode :

    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
    06-11 17:25:35.113: W/System.err(31411): java.net.UnknownHostException: Address is neither 4 or 16 bytes: [49, 57, 50, 46, 49, 54, 56, 46, 49, 55, 57, 46, 49]
    06-11 17:25:35.129: W/System.err(31411): 	at java.net.InetAddress.badAddressLength(InetAddress.java:792)
    06-11 17:25:35.129: W/System.err(31411): 	at java.net.InetAddress.getByAddress(InetAddress.java:787)
    06-11 17:25:35.129: W/System.err(31411): 	at java.net.InetAddress.getByAddress(InetAddress.java:748)
    06-11 17:25:35.129: W/System.err(31411): 	at com.projet_bts.system_mission_android.Lien.envoi_cmd_input(Lien.java:32)
    06-11 17:25:35.129: W/System.err(31411): 	at com.projet_bts.system_mission_android.Commandes.input_start_off(Commandes.java:44)
    06-11 17:25:35.129: W/System.err(31411): 	at com.projet_bts.system_mission_android.Interface_MainActivity$1.onClick(Interface_MainActivity.java:64)
    06-11 17:25:35.137: W/System.err(31411): 	at android.view.View.performClick(View.java:4222)
    06-11 17:25:35.137: W/System.err(31411): 	at android.view.View$PerformClick.run(View.java:17273)
    06-11 17:25:35.137: W/System.err(31411): 	at android.os.Handler.handleCallback(Handler.java:615)
    06-11 17:25:35.137: W/System.err(31411): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    06-11 17:25:35.137: W/System.err(31411): 	at android.os.Looper.loop(Looper.java:137)
    06-11 17:25:35.137: W/System.err(31411): 	at android.app.ActivityThread.main(ActivityThread.java:4895)
    06-11 17:25:35.144: W/System.err(31411): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-11 17:25:35.144: W/System.err(31411): 	at java.lang.reflect.Method.invoke(Method.java:511)
    06-11 17:25:35.144: W/System.err(31411): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
    06-11 17:25:35.144: W/System.err(31411): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
    06-11 17:25:35.144: W/System.err(31411): 	at dalvik.system.NativeStart.main(Native Method)
    06-11 17:25:35.152: W/System.err(31411): java.net.UnknownHostException: Address is neither 4 or 16 bytes: [49, 57, 50, 46, 49, 54, 56, 46, 49, 55, 57, 46, 49]
    06-11 17:25:35.152: W/System.err(31411): 	at java.net.InetAddress.badAddressLength(InetAddress.java:792)
    06-11 17:25:35.152: W/System.err(31411): 	at java.net.InetAddress.getByAddress(InetAddress.java:787)
    06-11 17:25:35.152: W/System.err(31411): 	at java.net.InetAddress.getByAddress(InetAddress.java:748)
    06-11 17:25:35.152: W/System.err(31411): 	at com.projet_bts.system_mission_android.Lien.envoi_cmd_input(Lien.java:47)
    06-11 17:25:35.160: W/System.err(31411): 	at com.projet_bts.system_mission_android.Commandes.input_start_off(Commandes.java:44)
    06-11 17:25:35.160: W/System.err(31411): 	at com.projet_bts.system_mission_android.Interface_MainActivity$1.onClick(Interface_MainActivity.java:64)
    06-11 17:25:35.160: W/System.err(31411): 	at android.view.View.performClick(View.java:4222)
    06-11 17:25:35.160: W/System.err(31411): 	at android.view.View$PerformClick.run(View.java:17273)
    06-11 17:25:35.160: W/System.err(31411): 	at android.os.Handler.handleCallback(Handler.java:615)
    06-11 17:25:35.160: W/System.err(31411): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    06-11 17:25:35.160: W/System.err(31411): 	at android.os.Looper.loop(Looper.java:137)
    06-11 17:25:35.168: W/System.err(31411): 	at android.app.ActivityThread.main(ActivityThread.java:4895)
    06-11 17:25:35.168: W/System.err(31411): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-11 17:25:35.168: W/System.err(31411): 	at java.lang.reflect.Method.invoke(Method.java:511)
    06-11 17:25:35.168: W/System.err(31411): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
    06-11 17:25:35.168: W/System.err(31411): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
    06-11 17:25:35.168: W/System.err(31411): 	at dalvik.system.NativeStart.main(Native Method)
    J’espère avoir bien expliqué mon problème, si le temps vous permet de jeter un coup d’œil à mon problème cela me serais d'une très grande aide.
    Je vous remercie par avance

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Balise code svp, c'est illisible là...

    et sinon l'erreur est assez claire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    06-11 17:25:35.113: W/System.err(31411): java.net.UnknownHostException: Address is neither 4 or 16 bytes: [49, 57, 50, 46, 49, 54, 56, 46, 49, 55, 57, 46, 49]
    l'adresse est pas bonne, essaie de l'imprimer dans la console juste avant de construire la socket

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    ça c'est pas bon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
     adresse = InetAddress.getByAddress(ip.getBytes());
     } catch (UnknownHostException e) {
     e.printStackTrace();
     } //transforme l'ip en adresse reseau
     DatagramSocket socket;
    getBytes sur une string, retourne la séquence de byte pour encoder la string en question via l'encodage par défaut de la plateforme (UTF-8 sous *nix*, Cp1252 sous windoz, etc), ce n'est absolument pas ce que tu veux...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    ça c'est pas bon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
     adresse = InetAddress.getByAddress(ip.getBytes());
     } catch (UnknownHostException e) {
     e.printStackTrace();
     } //transforme l'ip en adresse reseau
     DatagramSocket socket;
    getBytes sur une string, retourne la séquence de byte pour encoder la string en question via l'encodage par défaut de la plateforme (UTF-8 sous *nix*, Cp1252 sous windoz, etc), ce n'est absolument pas ce que tu veux...
    Ok merci de la réponse, donc c'est ip que je doit remplacer par autre chose qu'un string si j'ai bien compris ou une autre fonction que getBytes() ? Je ne saisit pas totalement, j'imagine que c'est ça qui fausse mon adresse ip, d'après le logcat, non ?

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par antoinegehin Voir le message
    une autre fonction que getBytes()
    oui.

    en regardant la doc de InetAddress, on trouve cette méthode qui fait exactement ce que tu veux:
    http://docs.oracle.com/javase/7/docs...a.lang.String)
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

Discussions similaires

  1. Communication UDP Java server et C client
    Par nabil.brarou dans le forum API standards et tierces
    Réponses: 21
    Dernier message: 20/08/2013, 11h38
  2. Réponses: 2
    Dernier message: 08/11/2012, 15h07
  3. Problème Install Client lourd java OEM 10G
    Par genio dans le forum Oracle
    Réponses: 0
    Dernier message: 19/08/2009, 15h28
  4. Réponses: 24
    Dernier message: 29/06/2007, 16h49
  5. [java annotations] rien ne se passe!
    Par ploxien dans le forum Langage
    Réponses: 6
    Dernier message: 27/04/2007, 14h36

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