2017-02-07 1 views
0

Pour un projet en Java, j'utilise une adresse IP d'utilisateurs comme un identifiant unique pour un site Web. Tout fonctionne correctement lorsqu'un utilisateur n'a qu'une adresse IPv4.Rendre Java signal une adresse IPv6 instable de IPv4

Mais voici mon problème, lorsqu'un utilisateur a une adresse IPv6, Java signalera une adresse IPv4, alors que son navigateur signalera une adresse IPv6 (Dans l'appel $ _SERVER ['REMOTE_ADDR'] en PHP).

Alors, comment puis-je rendre Java signaler son adresse IPv6 instable de IPv4?

Edit: Quelques précisions:

Ceci est utilisé uniquement pour permettre à une personne de télécharger un fichier. Peu importe si plusieurs personnes utilisent le même PC, pas vraiment important.

Supposons qu'un utilisateur passe à http://whatismyipaddress.com/ avec du chrome, il affichera une adresse IPv6. Mais si j'utilise maintenant Java pour récupérer http://whatismyipaddress.com/, il affichera une adresse IPv4. Pourquoi cela et comment puis-je afficher l'adresse IPv6 affichée dans Chrome?

Edit 2: Le code i utiliser

public static String get(String url) throws WebFetchException { 
    String result = ""; 
    try { 
      URL url1 = new URL(url); 
      HttpsURLConnection urlConn = (HttpsURLConnection) url1.openConnection(); 
      urlConn.setConnectTimeout(8 * 1000); 
      urlConn.setRequestMethod("GET"); 
      BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); 
      String text; 
      while ((text = in.readLine()) != null) { 
       result = result + text; 
      } 
      in.close(); 
     } 
    } catch (Exception e) { 
     throw new WebFetchException("There was an exception while fetching the requested page: " + url); 
    } 
    return result; 
} 
+0

Eh bien tout d'abord, l'adresse IP n'est pas un identifiant (complètement) unique. Pourquoi ne pas simplement stocker l'adresse IP - peu importe si c'est IPv4 ou ipv6? Et que voulez-vous dire par "Java rapportera une adresse IPv4"? –

+0

Votre système ne fonctionnera pas pour plusieurs utilisateurs sur la même machine. –

+0

Comment extraire les données ip, utilisez-vous un type spécifique? Avez-vous du code? –

Répondre

1

L'hypothèse selon laquelle une adresse IP peut être utilisé comme identifiant est erroné. De plus en plus de fournisseurs d'accès à Internet déploient une forme de NAT, de sorte que de nombreux utilisateurs partageront un pool d'évaluations IPv4. L'adresse d'un utilisateur peut changer d'une connexion à l'autre, vous ne pouvez donc pas vous attendre à ce qu'elle soit stable. D'autre part, d'autres utilisateurs reçoivent également IPv6, et les appareils ont plusieurs adresses IPv6 qui changeront au fil du temps.

Il arrive également que, en raison de problèmes de connectivité, les utilisateurs basculent entre IPv4 et IPv6. Eh bien, l'utilisateur ne remarquera même pas, leur appareil va le faire. Donc, se fier aux adresses IP ne fonctionnera pas.