IP en Java

choco90 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Voici mon problème :

Écrire un programme Java qui affiche sur l'écran la version du protocole IP utilisé dans une machine (IP version 4, IP version 6)


Voici mon programme :

import java.net.InetAddress;

public class tcp {

	
	public static void main(String[] args) throws Exception {
		
	InetAddress ip = InetAddress.getByName("localhost");
		
	 
		
	byte []	MonIP = ip.getAddress();
	
	
	if (MonIP.length == 4) {
		System.out.println("IP version 4");
	}
	else {
		System.out.println("IP version 6");
	}
	
	} // end main 
} // end class tcp


l'exécution du programme m'a affiché ceci : IP version 4

Que pensez vous de mon programme juste ou faux ?

Merci de me répondre ^^

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Ton code est absurde, remplace InetAddress par Inet6Adress, tu verras que bien que le format soit IPv6, ton code affiche quand même version 4, car "localhost" vaut toujours 127.0.0.1 au format IPv4 donc...
1
choco90 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention   7
 
Stp dis moi, par quoi remplacerai je l'argument "localhost" de la méthode getByName ? Normalement par l'adresse IP de ma machine, n'est ce pas ? Mais que dois je mettre exactement ?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Regarde getLocalHost
0
choco90 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention   7
 
Salut !

Voici mon new code :

import java.net.InetAddress;

public class tcp {

	
	public static void main(String[] args) throws Exception {
		
	InetAddress ip = InetAddress.getLocalHost();
		
	byte []	MonIP = ip.getAddress();
	
	
	if (MonIP.length == 4) {
		System.out.println("IP version 4");
	}
	else {
		System.out.println("IP version 6");
	}
	
	} // end main 
} // end class tcp


Bon alors, qu'est ce que t'en dis ?
0
choco90 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention   7
 
ayayay réponds moi :(
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Imaginons que je force un peu la machine...

InetAddress ip =
    InetAddress.getByAddress(InetAddress.getLocalHost().getHostAddress(),
    new byte[16]);

Ton adresse est toujours IPv4 mais contenu dans un tableau de byte plus grand.
Il t'affichera "IP version 6" alors que ton adresse est bien IPv4.

Regarde plutôt du côté de isIPv4CompatibleAddress
0