IP en Java

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

  1. Modérateur
    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. 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 ?
    2. 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 ?
    3. ayayay réponds moi :(
  2. Modérateur
    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