Rechercher une page de manuel
getnameinfo
Langue: ja
Version: 2007-06-08 (openSuse - 09/10/07)
Section: 3 (Bibliothèques de fonctions)
̾Á°
getnameinfo - ¥¢¥É¥ì¥¹¤«¤é̾Á°¤Ø¤ÎÊÑ´¹¤ò¥×¥í¥È¥³¥ë¤Ë°Í¸¤·¤Ê¤¤¤«¤¿¤Á¤Ç¹Ô¤¦½ñ¼°
#include <sys/socket.h> #include <netdb.h> int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
ÀâÌÀ
getnameinfo(3) ´Ø¿ô¤Ï¡¢¥¢¥É¥ì¥¹¤«¤é¥Î¡¼¥É̾¤Ø¤ÎÊÑ´¹¤ò ¥×¥í¥È¥³¥ë¤Ë°Í¸¤·¤Ê¤¤¤«¤¿¤Á¤Ç¹Ô¤¦¤¿¤á¤Ëµ¬Äꤵ¤ì¤¿¡£ ¤³¤Î´Ø¿ô¤Ï gethostbyaddr(3) ¤È getservbyport(3) ¤Îµ¡Ç½¤ò°ì¤Ä¤Ë¤·¤¿¤â¤Î¤Ç¡¢ getaddrinfo(3) ¤ÈµÕ¤ÎÆ°ºî¤ò¹Ô¤¦¡£ sa °ú¤¿ô¤Ï¡¢ IP ¥¢¥É¥ì¥¹¤È¥Ý¡¼¥ÈÈÖ¹æ¤Î¾ðÊó¤òÊÝ»ý¤·¤Æ¤¤¤ë ÈÆÍÑŪ¤Ê¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¹½Â¤ÂÎ (sockaddr_in ·¿¤Þ¤¿¤Ï sockaddr_in6 ·¿) ¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤Ç¤¢¤ë¡£ salen ¤Ï sa ¤Î¥µ¥¤¥º¤Ç¤¢¤ë¡£ host ¤È serv °ú¤¿ô¤Ï¡¢(¤½¤ì¤¾¤ì¥µ¥¤¥º¤¬ hostlen ¤È servlen ¤Î) ¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤Ç¤¢¤ê¡¢ ¤³¤³¤Ë·ë²Ì¤ÎÃͤ¬³ÊǼ¤µ¤ì¤ë¡£¥Û¥¹¥È̾¤¬ÉÔÍפǤ¢¤ë¤³¤È¤ò¤³¤Î´Ø¿ô¤ËÅÁ¤¨¤ë¤Ë¤Ï¡¢ host ¤Ë NULL ¤ò»ØÄꤹ¤ë¤«¡¢ hostlen ¤Ë 0 ¤ò»ØÄꤹ¤ë¡£Æ±Íͤˡ¢¥µ¡¼¥Ó¥¹Ì¾¤¬ÉÔÍפʾì¹ç¤Ï¡¢ serv ¤Ë NULL ¤ò»ØÄꤹ¤ë¤«¡¢ servlen ¤Ë 0 ¤ò»ØÄꤹ¤ë¡£ ¤·¤«¤·¡¢¥Û¥¹¥È̾¤È¥µ¡¼¥Ó¥¹Ì¾¤ÎξÊý¤òÉÔÍפÀ¤È»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤ (¤¤¤º¤ì¤«°ìÊý¤ÏÍ׵᤹¤ë¤³¤È)¡£
flags °ú¤¿ô¤Ç getnameinfo(3) ¤ÎÆ°ºî¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£»ØÄê¤Ç¤¤ëÃͤϰʲ¼¤ÎÄ̤ê:
- NI_NOFQDN
- »ØÄꤹ¤ë¤È¡¢¥í¡¼¥«¥ë¤Ê¥Û¥¹¥È¤Ë¤Ï FQDN ¤Î¥Û¥¹¥È̾¤ÎÉôʬ¤Î¤ß¤òÊÖ¤¹¡£
- NI_NUMERICHOST
- »ØÄꤹ¤ë¤È¡¢¥Û¥¹¥È̾¤Î¿ôÃÍɽ¼°¤¬ÊÖ¤µ¤ì¤ë¡£ (»ØÄꤷ¤Ê¤¯¤Æ¤â¡¢¥Î¡¼¥É¤Î̾Á°¤¬°ú¤±¤Ê¤¤¾ì¹ç¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤ë¤³¤È¤Ï¤¢¤ë)¡£
- NI_NAMEREQD
- »ØÄꤹ¤ë¤È¡¢¥Û¥¹¥È̾¤¬°ú¤±¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¥¨¥é¡¼¤òÊÖ¤¹¡£
- NI_NUMERICSERV
- »ØÄꤹ¤ë¤È¡¢¥µ¡¼¥Ó¥¹Ì¾¤¬¿ôÃÍɽ¼° (Î㤨¤Ð¥Ý¡¼¥ÈÈÖ¹æ) ¤ÇÊÖ¤µ¤ì¤ë¡£
- NI_DGRAM
- »ØÄꤹ¤ë¤È¡¢¥¹¥È¥ê¡¼¥à¥Ù¡¼¥¹ (TCP) ¤Ç¤Ê¤¯¥Ç¡¼¥¿¥°¥é¥à¥Ù¡¼¥¹ (UDP) ¤Î¥µ¡¼¥Ó¥¹¤òÂоݤˤ¹¤ë¡£¿ô¤Ï¾¯¤Ê¤¤¤¬¡¢ UDP ¤È TCP ¤Ç°ã¤¦¥µ¡¼¥Ó¥¹¤òÄ󶡤·¤Æ¤¤¤ë¥Ý¡¼¥È (512-514) ¤ËÂФ·¤ÆɬÍפȤʤ롣
¹ñºÝ²½¥É¥á¥¤¥ó̾¤Î¤¿¤á¤Î getnameinfo() ¤Î³ÈÄ¥
glibc 2.3.4 ¤«¤é¡¢ getnameinfo() ¤Ë³ÈÄ¥¤¬¹Ô¤ï¤ì¡¢¥Û¥¹¥È̾¤È ¹ñºÝ²½¥É¥á¥¤¥ó̾ (Internationalized Domain Name; IDN) ·Á¼°¤È¤Î´Ö¤Ç Æ©²áŪ¤ÊÊÑ´¹¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë (IDN ·Á¼°¤Ë¤Ä¤¤¤Æ¤Ï RFC 3490 ¤Î Internationalizing Domain Names in Applications (IDNA) ¤ò»²¾È)¡£3¤Ä¤Î¥Õ¥é¥°¤¬¿·¤¿¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
- NI_IDN
- ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢É¬ÍפǤ¢¤ì¤Ð¡¢¸¡º÷½èÍý¤Ç¸«¤Ä¤«¤Ã¤¿Ì¾Á°¤Ï IDN ·Á¼°¤«¤é¥í¥±¡¼¥ë¤Ë±þ¤¸¤¿Éä¹æ²½·Á¼°¤ËÊÑ´¹¤µ¤ì¤ë¡£ ASCII ʸ»ú¤À¤±¤Î̾Á°¤Ï¤³¤ÎÊÑ´¹¤Ç¤Ï±Æ¶Á¤ò¼õ¤±¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢ ´û¸¤Î¥×¥í¥°¥é¥à¤ä´Ä¶¤Ç¤³¤Î¥Õ¥é¥°¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
- NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES
- ¤³¤ì¤é¤Î¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢IDNA ½èÍý¤Ç»ÈÍѤµ¤ì¤ë¥Õ¥é¥° IDNA_ALLOW_UNASSIGNED (̤³ä¤êÅö¤Æ¤Î Unicode ¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òµöÍÆ) ¤È IDNA_USE_STD3_ASCII_RULES (½ÐÎϤ¬ STD3 ½àµò¤Î¥Û¥¹¥È̾¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë) ¤¬¤½¤ì¤¾¤ì͸ú¤Ë¤Ê¤ë¡£
ÊÖ¤êÃÍ
À®¸ù¤¹¤ë¤È 0 ¤¬Ê֤ꡢ(Í׵ᤵ¤ì¤Æ¤¤¤ì¤Ð) ¥Î¡¼¥É¤È¥µ¡¼¥Ó¥¹¤Î̾Á°¤¬ NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Î·Á¼°¤Ç¤½¤ì¤¾¤ì¤Î»ØÄê¥Ð¥Ã¥Õ¥¡¤ËÊÖ¤µ¤ì¤ë (¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤Ë¤¢¤¦¤è¤¦¤Ë½Ì¤á¤é¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤)¡£ ¥¨¥é¡¼¤Î¾ì¹ç¤Ï¡¢°Ê²¼¤Î 0 °Ê³°¤Î¥¨¥é¡¼¡¦¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤ë:- EAI_AGAIN
- »ØÄꤵ¤ì¤¿Ì¾Á°¤¬¸½»þÅÀ¤Ç¤Ï²ò·è¤Ç¤¤Ê¤«¤Ã¤¿¡£ ¸å¤ÇºÆ»î¹Ô¤·¤Æ¤ß¤ë¤³¤È¡£
- EAI_BADFLAGS
- flags °ú¤¿ô¤ËÉÔÀµ¤ÊÃͤ¬Í¿¤¨¤é¤ì¤¿¡£
- EAI_FAIL
- ²óÉü¤Ç¤¤Ê¤¤¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£
- EAI_FAMILY
- »ØÄꤷ¤¿¥¢¥É¥ì¥¹¥Õ¥¡¥ß¥ê¡¼¤¬Ç§¼±¤Ç¤¤Ê¤«¤Ã¤¿¡£ ¤¢¤ë¤¤¤Ï¥¢¥É¥ì¥¹¤ÎŤµ¤¬»ØÄꤵ¤ì¤¿¥Õ¥¡¥ß¥ê¡¼¤Ë¹ç¤¦¤â¤Î¤Ç¤Ê¤«¤Ã¤¿¡£
- EAI_MEMORY
- ¥á¥â¥ê¤¬Â¤ê¤Ê¤¤¡£
- EAI_NONAME
- Í¿¤¨¤é¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤Ç¤Ï̾Á°¤¬²ò·è¤Ç¤¤Ê¤¤¡£ NI_NAMEREQD ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤¿¤¬¥Û¥¹¥È̾¤¬·èÄê¤Ç¤¤Ê¤«¤Ã¤¿¤«¡¢ ¥Û¥¹¥È̾¤â¥µ¡¼¥Ó¥¹Ì¾¤âÍ׵ᤵ¤ì¤Ê¤«¤Ã¤¿¡£
- EAI_OVERFLOW
- host ¤Þ¤¿¤Ï serv ¤¬»Ø¤·¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¤¬¾®¤µ¤¹¤®¤¿¡£
- EAI_SYSTEM
- ¥·¥¹¥Æ¥à¥¨¥é¡¼¤¬µ¯¤Ã¤¿¡£ ¥¨¥é¡¼¥³¡¼¥É¤Ï errno ¤ËÀßÄꤵ¤ì¤ë¡£
gai_strerror(3) ´Ø¿ô¤ò»È¤¦¤È¡¢¤³¤ì¤é¤Î¥¨¥é¡¼¡¦¥³¡¼¥É¤ò¡¢¥¨¥é¡¼¡¦¥ì¥Ý¡¼¥È¤ËŬ¤·¤¿ ¿Í´Ö¤¬Æɤߤ䤹¤¤Ê¸»úÎó¤ËËÝÌõ¤·¤Æ¤¯¤ì¤ë¡£
¥Õ¥¡¥¤¥ë
/etc/hosts/etc/nsswitch.conf
/etc/resolv.conf
½àµò
RFC 2553, POSIX.1-2001.Ãí°Õ
ŬÀڤʥХåե¡¥µ¥¤¥º¤òÁªÂò¤Ç¤¤ë¤è¤¦¤Ë¡¢ <netdb.h> ¤Ë°Ê²¼¤ÎÄê¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£# define NI_MAXHOST 1025 # define NI_MAXSERV 32
Á°¼Ô¤Ï¡¢ºÇ¶á¤Î¥Ð¡¼¥¸¥ç¥ó¤Î BIND ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë <arpa/nameser.h> Ãæ¤ÎÄê¿ô MAXDNAME ¤ÈƱ¤¸ÃͤǤ¢¤ë¡£ ¸å¼Ô¤Ï¡¢³ä¤êÅö¤ÆºÑ¤Î¿ôÃͤˤĤ¤¤Æµ¤·¤¿¸½ºß¤Î RFC ¤Ë Îóµó¤µ¤ì¤Æ¥µ¡¼¥Ó¥¹¤«¤é¿äÎ̤·¤¿ÃͤǤ¢¤ë¡£
Îã
°Ê²¼¤Î¥³¡¼¥É¤Ï¡¢»ØÄꤵ¤ì¤¿¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤ËÂФ¹¤ë ¥Û¥¹¥È¤È¥µ¡¼¥Ó¥¹¤Î¿ôÃÍɽ¼°¤ò¼èÆÀ¤·¤è¤¦¤È»î¤ß¤ë¡£ ÆÃÄê¤Î¥¢¥É¥ì¥¹¥Õ¥¡¥ß¥ê¡¼¤ËÂФ¹¤ë»²¾È¾ðÊó¤Ï °ìÀڥϡ¼¥É¥³¡¼¥É¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃåÌܤ·¤Æ¤Û¤·¤¤¡£struct sockaddr *sa; /* input */ char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0) printf("host=%s, serv=%s\n", hbuf, sbuf);
°Ê²¼¤Ç¤Ï¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤Ë µÕ¸þ¤¤Î¥¢¥É¥ì¥¹¥Þ¥Ã¥Ô¥ó¥°¤¬Â¸ºß¤¹¤ë¤«¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¤¤ë¡£
struct sockaddr *sa; /* input */ char hbuf[NI_MAXHOST]; if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) printf("could not resolve hostname"); else printf("host=%s\n", hbuf);
getnameinfo() ¤ò»È¤Ã¤¿¥×¥í¥°¥é¥àÎ㤬 getaddrinfo(3) ¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¡£
´ØÏ¢¹àÌÜ
getaddrinfo(3), gethostbyaddr(3), getservbyname(3), getservbyport(3), inet_ntop(3), socket(3), hosts(5), services(5), hostname(7), named(8)R. Gilligan, S. Thomson, J. Bound and W. Stevens, Basic Socket Interface Extensions for IPv6, RFC 2553, March 1999.
Tatsuya Jinmei and Atsushi Onoe, An Extension of Format for IPv6 Scoped Addresses, internet draft, work in progress. ftp://ftp.ietf.org/internet-drafts/draft-ietf-ipngwg-scopedaddr-format-02.txt
Craig Metz, Protocol Independence Using the Sockets API, Proceedings of the freenix track: 2000 USENIX annual technical conference, June 2000. http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/metzprotocol.html
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre