La seule façon saine autour de cette question est de mettre à jour votre application pour être en mesure de comprendre et de stocker des adresses IPv6.
Je le sais, mais actuellement, la plupart des adresses IPV4 à l'intérieur de l'espace. J'ai juste besoin de méthode pour convertir ces adresses qui existent dans IPV4 de l'espace. S'il vous plaît, mettez à jour votre réponse en fournissant le moyen de convertir avant votre attention au sujet de tp IPv6 IPv4 compatibilité.
Les adresses IPv6 sont de 16 octets. À l'aide de cette bibliothèque, si vous partez avec un tableau de 16 octets, vous pouvez construire l'adresse IPv6 de l'objet:
IPv6Address addr =newIPv6Address(bytes);//bytes is byte[16]
À partir de là, vous pouvez vérifier si l'adresse IPv4 mappée, compatible IPv4 IPv4 traduit, et ainsi de suite (il existe de nombreuses façons IPv6 représente adresses IPv4). Dans la plupart des cas, si une adresse IPv6 représente une adresse IPv4, l'adresse ipv4 est dans la partie inférieure de 4 octets, et si vous pouvez obtenir le dérivé de l'adresse IPv4 comme suit. Ensuite, vous pouvez transformer à nouveau en octets, qui sera situé à seulement 4 octets pour IPv4.
Ne devrait pas ipv6Address être addr ? .. et ipv4Address être derivedIpv4Address ? Merci de nous montrer un code concis. Le code ne fonctionne pas de toute façon: getLowerIPv4Address est pas défini. Vous avez raison, getLowerIPv4Address était le nom de la méthode dans une version antérieure de la bibliothèque, le nom est maintenant getEmbeddedIPv4Address. Aussi, vous avez raison à propos incohérents var noms, j'ai mis à jour l'exemple de code.
Voici le code que vous recherchez dans le javascript. Eh bien, vous savez que vous ne pouvez pas convertir toutes les adresses ipv6
<script>
function parseIp6(str){//init
var ar=newArray;for(var i=0;i<8;i++)ar[i]=0;//check for trivial IPsif(str=="::")return ar;//parse
var sar=str.split(':');
var slen=sar.length;if(slen>8)slen=8;
var j=0;for(var i=0;i<slen;i++){//this is a "::", switch to end-run modeif(i && sar[i]==""){j=9-slen+i;continue;}
ar[j]=parseInt("0x0"+sar[i]);
j++;}return ar;}
function ipcnvfrom6(ip6){
var ip6=parseIp6(ip6);
var ip4=(ip6[6]>>8)+"."+(ip6[6]&0xff)+"."+(ip6[7]>>8)+"."+(ip6[7]&0xff);return ip4;}
alert(ipcnvfrom6("::C0A8:4A07"));</script>
Il n'y a pas un 1-1 correspondance entre les adresses IPv4 et IPv6 (ni entre les adresses IP et les périphériques), de sorte que ce que vous demandez n'est généralement pas possible.
Il est question de la plage d'adresses IPv6 qui représentent en réalité l'espace d'adressage IPv4, mais en général les adresses IPv6 ne sera pas de cette gamme.
Tout il y a IPv6 équivalents de trésorerie pour la plage d'adresses IPv4, vous ne pouvez pas convertir toutes les adresses IPv6 pour IPv4 - il y a plus d'adresses IPv6 qu'il y a des adresses IPv4.
La seule façon saine autour de cette question est de mettre à jour votre application pour être en mesure de comprendre et de stocker des adresses IPv6.
S'il vous plaît, mettez à jour votre réponse en fournissant le moyen de convertir avant votre attention au sujet de tp IPv6 IPv4 compatibilité.
OriginalL'auteur AllenJB
L'adresse ip de bibliothèque Java pouvez accomplir ce que vous décrivez ici.
Les adresses IPv6 sont de 16 octets. À l'aide de cette bibliothèque, si vous partez avec un tableau de 16 octets, vous pouvez construire l'adresse IPv6 de l'objet:
À partir de là, vous pouvez vérifier si l'adresse IPv4 mappée, compatible IPv4 IPv4 traduit, et ainsi de suite (il existe de nombreuses façons IPv6 représente adresses IPv4). Dans la plupart des cas, si une adresse IPv6 représente une adresse IPv4, l'adresse ipv4 est dans la partie inférieure de 4 octets, et si vous pouvez obtenir le dérivé de l'adresse IPv4 comme suit. Ensuite, vous pouvez transformer à nouveau en octets, qui sera situé à seulement 4 octets pour IPv4.
La javadoc est disponible sur le lien.
ipv6Address
êtreaddr
? .. etipv4Address
êtrederivedIpv4Address
? Merci de nous montrer un code concis. Le code ne fonctionne pas de toute façon:getLowerIPv4Address
est pas défini.Vous avez raison, getLowerIPv4Address était le nom de la méthode dans une version antérieure de la bibliothèque, le nom est maintenant getEmbeddedIPv4Address. Aussi, vous avez raison à propos incohérents var noms, j'ai mis à jour l'exemple de code.
OriginalL'auteur Sean F
Voici le code que vous recherchez dans le javascript. Eh bien, vous savez que vous ne pouvez pas convertir toutes les adresses ipv6
OriginalL'auteur Vishnuraj V
Il n'y a pas un 1-1 correspondance entre les adresses IPv4 et IPv6 (ni entre les adresses IP et les périphériques), de sorte que ce que vous demandez n'est généralement pas possible.
Il est question de la plage d'adresses IPv6 qui représentent en réalité l'espace d'adressage IPv4, mais en général les adresses IPv6 ne sera pas de cette gamme.
OriginalL'auteur Damien_The_Unbeliever
Quelques recherches sur google m'a amené sur le post suivant:
http://www.developerweb.net/forum/showthread.php?t=3434
Le code fourni dans le post est en C, mais il ne devrait pas être trop dur de le réécrire à Java.
OriginalL'auteur aioobe