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

Langage Java Discussion :

Covertir byte[] vers string rapidement


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 109
    Par défaut Covertir byte[] vers string rapidement
    Bonjour,
    Je suis entrain de concevoir une application qui me permet de capter les paquets entrant et sortant de mon interface réseau, pour realise ça j utilise JPCAP et winpcap, mais mon problème c lors de la réception des données j arrive pas à afficher le contenu du paquet, j ai toujours des données compréhensible et des données erronées (je pense que c est à cause de ma méthode de conversion lente), voici 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
     
    import jpcap.*;
    import jpcap.packet.Packet;
     
    class Capteur implements PacketReceiver {
    	public void receivePacket(Packet packet) {
     
    		byte[] packetData = packet.data;
     
    		char c ;
     
     
    		for (byte b : packetData){
    			 c = (char) (b & 0xff);
    		    System.out.print(c);
     
    		} 
     
     
    	}
     
    	public static void main(String[] args) throws Exception {
     
     
    		NetworkInterface[] devices = JpcapCaptor.getDeviceList();
     
     
     
    			for (int i = 0; i < devices.length; i++) {
    				System.out.println(i+" :"+devices[i].name + "(" + devices[i].description+")");
    				System.out.println("    data link:"+devices[i].datalink_name + "("
    						+ devices[i].datalink_description+")");
    				System.out.print("    MAC address:");
    				for (byte b : devices[i].mac_address)
    					System.out.print(Integer.toHexString(b&0xff) + ":");
    				System.out.println();
    				for (NetworkInterfaceAddress a : devices[i].addresses)
    					System.out.println("    address:"+a.address + " " + a.subnet + " "
    							+ a.broadcast);
     
    			JpcapCaptor jpcap = JpcapCaptor.openDevice(devices[0], 2000, false, 20);
     
    			jpcap.loopPacket(-1, new Capteur());
    		}
    	}
    }
    PS : j ai entendu parler qu il faut utiliser un bufferReader ??? est ce que c vrai
    j ai utilisé plusieurs façon de conversion mais sans résultat , aidez moi SVP
    Merci d'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
    Par défaut
    2 solutions:

    1) utiliser le constructeur java.lang.String(byte[]) (attention, dépendant du charset par défaut du système)
    2) utiliser un CharsetDecoder qui permet d'avoir un contrôle sur le charset à utiliser pour décoder les infos


  3. #3
    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
    Solution 1-bis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new String(byteArray, "us-ascii")
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    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 : 46
    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
    1-tris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nex String(bytes,"ISO-8859-1");

    Pour le bufferedReader, ca n'aura de l'intérer que si tu es sur de recevoir du texte. Comme il s'agit de capture que tu veux afficher au user, ce n'est pas l'idéal, t'aura probablement aussi besoin des byte[]

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 109
    Par défaut
    Merci pour vos réponses;
    une dernière question, est ce que grace à ce petit capteur peut on récupérer une requete HTTP "POST ou GET", et sa réponse ?? je remarque qlq données concernant une requete mais pas le flux POST???

    et merci d'avance

  6. #6
    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
    Par défaut
    aucune idée... jamais utilisé ces api...

    faut lire la doc!


  7. #7
    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 : 46
    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
    tu peux récupérer n'importe quel packet du réseau, maintenant savoir si la librairie fait pour toi le boulot de reconstitution du flux, faut regarder la doc.

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

Discussions similaires

  1. byte[] vers string
    Par Neitsa dans le forum C#
    Réponses: 4
    Dernier message: 28/11/2009, 16h39
  2. conversion de byte vers string
    Par dalilnet dans le forum Langage
    Réponses: 5
    Dernier message: 18/07/2008, 15h05
  3. [Conversion] Comment transformer un byte[] en String ?
    Par Elbarto dans le forum Langage
    Réponses: 8
    Dernier message: 02/01/2006, 01h37
  4. [debutant]Convertir un pointeur byte en String
    Par patmaba dans le forum SL & STL
    Réponses: 3
    Dernier message: 22/07/2005, 13h34
  5. [C#] Convertir des bytes en string
    Par sorcer1 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/02/2005, 15h52

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