7
votes

Inet_ntoa et inet_aton en Java?

J'utilise java (avec cadre de ressort) et souhaitez convertir entre les représentations numériques d'adresses IPv4 (par exemple 2130706433) et leurs contreparties textuelles (par exemple 127.0.0.1 ). Souvent, les méthodes de fonctionnement sont fournies dans des langages de programmation (elles sont généralement appelées inet_ntoa et iNet_aton respectivement) mais je ne peux pas le trouver dans Java.

Tout le monde sait ce qu'ils sont appelés ou comment les mettre en œuvre?


0 commentaires

6 Réponses :


2
votes

Je suppose que le inetAddress fera ce que vous voulez


0 commentaires

3
votes

java.net.inetaddress.getByAddress (octet [])

Pas exactement comme inet_ntoa, mais très similaire à. p>

Exemple avec longue dispute: P>

String ntoa(long raw) {
    byte[] b = new byte[] {(byte)(raw >> 24), (byte)(raw >> 16), (byte)(raw >> 8), (byte)raw};
    try {
        return InetAddress.getByAddress(b).getHostAddress();
    } catch (UnknownHostException e) {
        //No way here
        return null;
    }
}


2 commentaires

Merci. Serait bien d'avoir une fonction qui prend un long comme argument.


Vous pouvez utiliser BYTEBUFFER . Méthodes: putlong () puis tableau ()



4
votes

regarde inétaddress dans les Javadocs . Ces fonctions ne sont pas directement prises en charge par l'API standard, mais vous pouvez extraire les deux représentations en utilisant cette classe. Un petit exemple: xxx

(Gardez à l'esprit que les octets sont signés.)


Si vous avez long-s que vous pouvez utiliser bytebuffer , pour une couverture rapide et confortable. Méthodes: putlong () puis tableau ().


1 commentaires

Merci, semble être une façon fructueuse d'explorer. On dirait qu'il n'y a pas de méthodes qui font ce que je veux tout de suite.



3
votes

Voici ce que je me suis écrit pour obtenir une représentation numérique d'une adresse IPv4 textuelle: xxx

Bien sûr, cela suppose que l'adresse IPv4 est donnée sur un format valide. < / p>


0 commentaires

0
votes

Les inetaddresses de Guava feront le tour.

regarde le commentaire de l'Ido dans aller de 127.0.0.1 au 2130706433, et retour à nouveau


0 commentaires

3
votes

en utilisant La bibliothèque Java iPaddress c'est simple, une ligne de code pour chaque direction fonctionne pour IPv4 et IPv6. En fait, vous pouvez écrire du code qui fonctionne pour IPv4 et IPv6 comme dans le premier exemple ci-dessous. Disclaimer: Je suis le chef de projet de cette bibliothèque.

Version IP-Version Agnostique à l'aide d'un octet [] et / ou BigInteger: p> xxx pré>

Utilisez INTS pour IPv4: P >

    1
    0:0:0:0:0:0:0:1

    2130706433
    127.0.0.1

    1
    0:0:0:0:0:0:0:1


0 commentaires