INET_PTON(3) | Manuel du programmeur Linux | INET_PTON(3) |
inet_pton - Convertir des adresses IPv4 et IPv6 sous forme texte en forme binaire
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
This function converts the character string src into a network address structure in the af address family, then copies the network address structure to dst. The af argument must be either AF_INET or AF_INET6. dst is written in network byte order.
Les familles d'adresses suivantes sont dès à présent supportées :
inet_pton() renvoie 1 si elle réussit (l'adresse réseau a été convertie avec succès). Elle renvoie une valeur nulle si src ne contient pas une adresse réseau valable pour la famille indiquée. Si af ne contient pas de famille d'adresse valable, -1 est renvoyé et errno contient EAFNOSUPPORT.
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface | Attribut | Valeur |
inet_pton() | Sécurité des threads | MT-Safe locale |
POSIX.1-2001, POSIX.1-2008.
Contrairement à inet_aton(3) et inet_addr(3), inet_pton() gère les adresses IPv6. D'un autre coté, inet_pton() n'accepte que les adresses IPv4 en notation décimale pointée alors que inet_aton(3) et inet_addr(3) autorisent la notation plus générale numérique pointée (formats à nombre hexadécimaux et octaux, de même que les formats n'exigeant pas que les 4 octets soient explicitement écrits). Pour une interface gérant les adresses IPv6 et IPv4 en notation numérique pointée, consultez getaddrinfo(3).
AF_INET6 ne reconnaît pas les adresses IPv4. Il faut dans ce cas fournir dans src une adresse IPv4 projetée dans l'espace IPv6.
Le programme suivant montre une utilisation de inet_pton() et inet_ntop(3). Voici quelques exemples d'exécution :
$ ./a.out i6 0:0:0:0:0:0:0:0 :: $ ./a.out i6 1:0:0:0:0:0:0:8 1::8 $ ./a.out i6 0:0:0:0:0:FFFF:204.152.189.116 ::ffff:204.152.189.116
#include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) {
unsigned char buf[sizeof(struct in6_addr)];
int domain, s;
char str[INET6_ADDRSTRLEN];
if (argc != 3) {
fprintf(stderr, "Usage: %s {i4|i6|<num>} string\n", argv[0]);
exit(EXIT_FAILURE);
}
domain = (strcmp(argv[1], "i4") == 0) ? AF_INET :
(strcmp(argv[1], "i6") == 0) ? AF_INET6 : atoi(argv[1]);
s = inet_pton(domain, argv[2], buf);
if (s <= 0) {
if (s == 0)
fprintf(stderr, "Not in presentation format");
else
perror("inet_pton");
exit(EXIT_FAILURE);
}
if (inet_ntop(domain, buf, str, INET6_ADDRSTRLEN) == NULL) {
perror("inet_ntop");
exit(EXIT_FAILURE);
}
printf("%s\n", str);
exit(EXIT_SUCCESS); }
Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
9 juin 2020 | Linux |