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 :

Lire un paquet reçu par un socket octet par octet


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 35
    Par défaut Lire un paquet reçu par un socket octet par octet
    Bonjour,
    Je débute en programmation Java avec les socket.
    J'ai un socket client qui se connecte a un serveur.
    Le serveur envoie un paquet.
    Coté client je voudrais recevoir ce paquet et le copier dans un tableau de byte[] (se serait l'idéal).
    Voila mon code :

    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
    import java.net.InetAddress;
    import java.io.IOException;
    import java.net.UnknownHostException;
    import java.net.Socket;
    import java.io.*;
    import java.net.*;
     
    public class socket {
     
    	public static void readPaquet(InputStreamReader Data) {
     
    	}
     
    	public static void main(String[] zero) {
     
    		InetAddress ServeurAdresse;
    		Socket socket;
     
    		try {
    			socket = new Socket("127.0.0.1", 80);
     
    			BufferedReader data = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     
    			System.out.println("Le serveur vous dit : " + data.readLine());
     
    			socket.close();
     
    		} catch (UnknownHostException e) {
     
    			e.printStackTrace();
    		}	catch (IOException e) {
     
                e.printStackTrace();
        }
    	}
     
    }
    Je n'ai pas trouvé de méthode pour convertir en tableau de byte mon paquet reçus dans l'objet data.

    Je sais qu'en C# on peut le faire de la façon suivante avec un objet _socket de type Socket :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                while (_Socket.Connected)
                {
    byte[] _buffer = new byte[_Socket.Available];
     
                    if (_buffer.Length != 0)
                    {
                        _Socket.Receive(_buffer);
                    }
    }
    D'après ce que j'ai pus lire grâce a mes recherches sur internet, l'objet BufferedReader est plus adapté pour lire les données ligne par ligne.
    De plus, je n'arrive pas a récupérer la taille de mon paquet en octet.

    Merci d'avance pour votre aide,

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Si tu veux des bytes, tu peux le faire avec ton bufferedreader c'est possible mais tu peux aussi le faire avec un inputstream.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream inputStream = socket.getInputStream();
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InputStream is = socket.getInputStream()
    int available = is.available();
    byte[] b = new byte[available];
    int readCount = is.read(b);

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Euh... Attention quand même avec available(). Dans les cas où il n'y a qu'un seul paquet ça devrait très bien aller, mais il y a pas spécialement de garantie.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    hé il demande la transposition, c'est le même problème en C. A lui après de traiter les données qui suivent.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 35
    Par défaut
    Je vous remercie sa fonctionne

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

Discussions similaires

  1. Lire contenu carte SD octets par octets
    Par distopia dans le forum Linux
    Réponses: 1
    Dernier message: 16/08/2011, 08h33
  2. Lire octets par octets une variable.
    Par lbemephisto dans le forum Débuter
    Réponses: 4
    Dernier message: 11/02/2009, 00h55
  3. lire octet par octet
    Par madjidri dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/05/2007, 15h19
  4. Réponses: 17
    Dernier message: 15/05/2007, 18h35
  5. Comment lire un fichier DB en cours d'utilisation par 1 autr
    Par jbat dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2004, 11h06

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