Split(".") ne fontionne pas!!!

Résolu
bloomingdals -  
 bloomingdals -
bonjour, j'ai une methode java qui permet de retourner le type d'une adresse IP (IPv4 ou 6) en fonction du nombre d'octets qui composent l'adresse.

voici la methode:
public String prefixType(String prefix)
{

String prefixType="";
String [] octets =prefix.split(".");
if (octets.length==4)
{
prefixType="IPv4";
}
else if (octets.length==6)
{
prefixType="IPv6";
}
return (prefixType);

}
ca me retourne l'exception out of boundry car quand j'affiche octet[0] je me rend compte que la methode split n'a pas fait son travail??? pourtant avec un separateur ":" ca fonctionne!

comment faire?
merci bcp
A voir également:

3 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Le problème c'est que split prend en paramètre une expression régulière, et que le point est un caractère spécial pour les expressions régulières, il aurait fallu faire un échappement (avec des slash) pour que ça fasse ce que tu veux :

String[] octets = prefix.split("\\.");

Mais pour le traitement particulier des adresses IP, les classes InetAddress sont effectivement plus adaptées...
2
bloomingdals
 
bon je me repond,
j'ai trouvé une solution qui pourra aider ceux qui tombent sur le même probleme.

j'ai utilisé la classe InetAddress de java
j'ai converi ma chaine "10.0.0.0" en une InetAddress
j'ai utilisé la méthode getAddress de la classe InetAddress et voila le code qui fonctionne parfaitement

public String prefixType(String prefix) throws UnknownHostException
{
InetAddress adresse =InetAddress.getByName(prefix);
String prefixType="";
byte [] octets =adresse.getAddress();
if (octets.length==4)
{
prefixType="IPv4";
}
else if (octets.length==6)
{
prefixType="IPv6";
}
return (prefixType);
1
bloomingdals
 
oui ca marche merci bien
0