Connaitre la class de l'@ réseau d'une InetAdress
Bonjour tout le monde.Dont le cadre d'un projet que je suis entrain de réalise je dois connaitre la classe d'une @réseau.pour cela j'utilise le mécanisme suivant je récupere le masque de l'@ réseau en question(en utilisant jpcap) et je le passe a une fonction qui doit me retourner un entier qui représente la classe et c'est là mon problème j'arrive pas a réalise la comparaison,Voici le code de la fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
private static int getClassReseau(InetAddress adr){
System.out.println("masque:"+adr);
String masqueC = new String("/255.255.255.0");
byte[] c = masqueC.getBytes();
byte[]t = adr.getAddress();
if(Arrays.equals(t,c)==true)
return 1;
else
return 0;
} |
Cette fonction teste uniquement si l'@ est de classe c(si elle marche pour cette classe elle marchera pour les autres).
Tout d'abord j'affiche l'@ pour voir si je reçois bien l'@ et elle est correcte elle m'affiche /255.255.255.0 mais le test est toujours a false.L'idée était de convertir l'@ en tableau de byte et de la comparer et de la comparer avec une representation du masque en byte[].Mais comme j'ai dit plut tôt sa marche pas.
L'autre idée que j'ai eu est d'au lieu de convertir en byte[] je convertit l'@ en string et je compare avec une representatioon en string du masque qlq chose du genre suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
private static int getClassReseau(InetAddress adr){
System.out.println("debut:"+adr);
String masqueC = new String("/255.255.255.0");
String t1=null;
try {
t1 = new String(adr.getAddress(), "ISO-8859-1");
System.out.println("ici:"+t1);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
if(t1.equals(masqueC)==true)
return 1;
else
return 0;
} |
Mais le problème est que la convertion ne se passe bien et m'affiche toujours des caractères bizarres comme ceux là:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.
Il y aussi un autre moyen je pense et c'est le plus facile a mon avis est d'utiliser la méthode equal de InetAdress mais pour cela il faut tout d'abord que j'arrive a crée un objet représentant la valeur du masque.dans ce cas la fonction ressemblerait à ça:
Code:
1 2 3 4 5 6 7 8
|
private static int getClassReseau(InetAddress adr){
InetAdress f = new InetAdress("255.255.255.0");
if(adr.equals(f)==true)
return 1;
else
return 0;
} |
Là le problème est que j'arrive pas a crée l'objet f avec l'@ que je veux.