Communication avec un serveur DNS : conversion byte en hexa

Communication avec un serveur DNS : conversion byte en hexa - Java - Programmation

Marsh Posté le 18-02-2003 à 16:49:07    

Salut,
 
je dois ecrire un petit prog communicant avec un serveur DNS. J'utilise des datagramPacket et donc j'envois et reçois des bytes.
 
En gros je recois des paquets que je dois découper et analyser.
 
Le truc c'est que je ne sais pas comment convertir mes bytes en hexa... c'est juste ça... je veux pouvoir afficher les trames reçues sous format hexadecimal.
 
Merci de votre aide.

Reply

Marsh Posté le 18-02-2003 à 16:49:07   

Reply

Marsh Posté le 18-02-2003 à 22:21:41    

J'ai affiné mon problème...
 
Voilà mon code :
 

Code :
  1. import java.io.*;
  2. import java.net.*;
  3. class dnsTest {
  4.   public static void main(String args[]) throws Exception
  5.   {
  6.     DatagramSocket clientSocket = new DatagramSocket();
  7.     InetAddress defaultDnsServer = InetAddress.getByName("hostname" );
  8.     byte[] query = new byte[1024];
  9.     byte[] response = new byte[2048];
  10.     query[0] = 0x00;
  11.     query[1] = 0x01;
  12.     query[2] = 0x00;
  13.     query[3] = 0x00;
  14.     query[4] = 0x00;
  15.     query[5] = 0x01;
  16.     query[6] = 0x00;
  17.     query[7] = 0x00;
  18.     query[8] = 0x00;
  19.     query[9] = 0x00;
  20.     query[10] = 0x00;
  21.     query[11] = 0x00;
  22.     query[12] = 0x02;
  23.     query[13] = 0x62;
  24.     query[14] = 0x6a;
  25.     query[15] = 0x03;
  26.     query[16] = 0x63;
  27.     query[17] = 0x6f;
  28.     query[18] = 0x6c;
  29.     query[19] = 0x03;
  30.     query[20] = 0x63;
  31.     query[21] = 0x6f;
  32.     query[22] = 0x6d;
  33.     query[23] = 0x02;
  34.     query[24] = 0x63;
  35.     query[25] = 0x6e;
  36.     query[26] = 0x00;
  37.     query[27] = 0x00;
  38.     query[28] = 0x01;
  39.     query[29] = 0x00;
  40.     query[30] = 0x01;
  41.     DatagramPacket queryPacket = new DatagramPacket(query, query.length, defaultDnsServer, 53);
  42.     //clientSocket.send(queryPacket);
  43.     DatagramPacket responsePacket = new DatagramPacket(response, response.length);
  44.     //clientSocket.receive(responsePacket);
  45.     String question = new String(queryPacket.getData());
  46.     //String result = new String(responsePacket.getData());
  47.     System.out.println("Data sent :" + question);
  48.     //System.out.println("Data received :" + result);
  49.     clientSocket.close();
  50.   }
  51. }


 
Voilà, donc je voudrais afficher les données de mon tableau de bytes. Le problème est qu'après l'avoir avoir encapsulé dans un DatagramPacket, si je recupère les données et le affiche avec queryPacket.getData() je n'ai plus que les caractères ascii littérals... genre le 0x6e correspond au caractère n et s'affiche correctement (les autres du genre 0x01 ne s'affiche évidement pas). Or je ne veux pas décoder ces données et les afficher sous forme ascii mais simplement les afficher sous forma Hexa.
 
Je sais pas si je suis plus clair...
 
Merci de votre aide.

Reply

Marsh Posté le 18-02-2003 à 23:06:20    

Integer.toHexString(unInt)
 


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed