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 réception avec socket


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut Problème réception avec socket
    Bonjour à tous,

    j'utilise DatagramSocket afin de recevoir un message d'un device (qui envoi des données en hexa sur le port 12756).

    J'essaie avec ça :
    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
     
     public static void main(String[] args) {
            try{ 
                    int MAX_LEN = 1000; 
                    int localPortNum = 12756; 
                try (DatagramSocket mySocket = new DatagramSocket(localPortNum)) { 
                    byte[] buffer = new byte[MAX_LEN]; 
                    DatagramPacket packet = new DatagramPacket(buffer, MAX_LEN); 
                    mySocket.receive(packet); 
                    String message = new String(buffer); 
                    System.out.println(message);
                    String rcvd = new String(packet.getData(), 0, packet.getLength()) + ", from address: "
                        + packet.getAddress() + ", port: " + packet.getPort();
                    System.out.println(rcvd);
                } 
            } 
            catch(NumberFormatException | IOException e){} 
        }
    mais rien, pourtant lorsque je fais un tcpdump (je suis sur Debian) sur le port 12756, je vois les paquets envoyés par le device.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Le catch() {} que tu as mis empêche Java de te dire ce qui ne va pas.

    On ne met jamais de catch() {} vide.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    ben j'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    catch(NumberFormatException | IOException e){
                System.out.println(e);
            }
    mais lorsque j'exécute le programme (java -jar SocketTest.jar),
    l'application démarre et reste ouverte.
    Je pense qu'il écoute sur le port 12756 mais qu'il reçoit rien, qu'en penses-tu ??

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ah, étant donné tes questions précédentes je pensais que tu testais ton programme dans un sandbox qui refuserait d'écouter des sockets, ce qui te serait dit avec une Exception.
    Mais c'est pas ça, donc.

    C'est bien du UDP et pas du TCP ?

    Je pense qu'il écoute sur le port 12756 mais qu'il reçoit rien, qu'en penses-tu ??
    En principe oui. S'il n'écoutait pas sur ce port il afficherait une erreur et s'arrêterait. Le fait qu'il tourne sans s'arrêter indique qu'il écoute.
    Et s'il recevait quelque chose, il l'afficherait et s'arrêterait. Le fait qu'il tourne sans s'arrêter indique qu'il ne reçoit aucun paquet.

    'Faudrait que je refasse quelques tests d'iptable avec UDP et Java.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    Le device envoie en tcp mais je peux le configurer en udp.
    Ca ne va pas en tcp ?

    Sinon j'ai trouvé une API OpenGTS avec lequel des personnes dans leur forum ont fait la même chose que ce que je recherche avec le même device, un teltonika, il y a un code d'exemple.

    Le truc c'est que c'est un fichier zip que j'ai téléchargé et décompressé,
    j'utilise Netbeans et lorsque j'ajouter à la libraire le dossier, je vois tous les package mais dans le code il dit qu'il ne voit pas les packages.
    Images attachées Images attachées  

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par toufik135 Voir le message
    Ca ne va pas en tcp ?
    Ben DatagramSocket c'est pour de la communication UDP.
    TCP c'est Socket tout court.

    Forcément si tu écoutes en UDP et que le serveur essaie de se connecter en TCP, ça ne peut pas marcher.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de QoS avec socket ssl java
    Par aaratorn dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 19/07/2007, 14h55
  2. [Socket] - Problème recv avec UTF8
    Par JuS80 dans le forum Réseau
    Réponses: 4
    Dernier message: 17/04/2007, 09h46
  3. problème chat avec socket/fork/pipe
    Par cedricdd dans le forum Réseau
    Réponses: 10
    Dernier message: 08/03/2007, 14h56
  4. Problème avec Socket et/ou Telnet sur le manager d'Asterisk
    Par gorby69 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 21/07/2006, 14h47
  5. Problème réception avec MsComm
    Par Jap dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/12/2005, 11h20

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