1 .\" This page is in the public domain.
2 .\" Almost all details are from RFC 2553.
4 .\" 2004-12-14, mtk, Added EAI_OVERFLOW error
5 .\" 2004-12-14 Fixed description of error return
7 .\" Translated 2005-02-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
8 .\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43
9 .\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05
10 .\" Updated 2010-04-10, Akihiro MOTOKI, LDP v3.24
12 .TH GETNAMEINFO 3 2009-12-03 "GNU" "Linux Programmer's Manual"
14 getnameinfo \- ¥¢¥É¥ì¥¹¤«¤é̾Á°¤Ø¤ÎÊÑ´¹¤ò¥×¥í¥È¥³¥ë¤Ë°Í¸¤·¤Ê¤¤¤«¤¿¤Á¤Ç¹Ô¤¦
17 .B #include <sys/socket.h>
20 .BI "int getnameinfo(const struct sockaddr *" "sa" ", socklen_t " "salen" ,
21 .BI " char *" "host" ", size_t " "hostlen" ,
22 .BI " char *" "serv" ", size_t " "servlen" ", int " "flags" );
26 glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
27 .RB ( feature_test_macros (7)
33 _POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
39 ¤ÎµÕ¤ÎÆ°ºî¤ò¹Ô¤¦¡£¤Ä¤Þ¤ê¡¢¥×¥í¥È¥³¥ë¤Ë°Í¸¤·¤Ê¤¤¤«¤¿¤Á¤Ç
40 ¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤«¤éÂбþ¤¹¤ë¥Û¥¹¥È̾¤È¥µ¡¼¥Ó¥¹¤Ø¤ÎÊÑ´¹¤ò¹Ô¤¦¡£
45 ¤Îµ¡Ç½¤ò°ì¤Ä¤Ë¤·¤¿¤â¤Î¤À¤¬¡¢
48 ¤Ï¥ê¥¨¥ó¥È¥é¥ó¥È¤Ç¤¢¤ê¡¢IPv4 ¤È IPv6 ¤Îº¹Ê¬¤Ë°Í¸¤·¤Ê¤¤¤«¤¿¤Á¤Ç
49 ¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
53 IP ¥¢¥É¥ì¥¹¤È¥Ý¡¼¥ÈÈÖ¹æ¤Î¾ðÊó¤òÊÝ»ý¤·¤Æ¤¤¤ë
54 ÈÆÍÑŪ¤Ê¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¹½Â¤ÂÎ
58 ·¿) ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
66 °ú¤¿ô¤Ï¡¢(¤½¤ì¤¾¤ì¥µ¥¤¥º¤¬
70 ¤Î) ¸Æ¤Ó½Ð¤·Â¦¤Ç³ÎÊݤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ê¡¢
71 ¥Û¥¹¥È̾¤È¥µ¡¼¥Ó¥¹Ì¾¤ò´Þ¤à NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤¬
72 ¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤µ¤ì¤ë¡£
74 ¥Û¥¹¥È̾¤¬ÉÔÍפǤ¢¤ë¤³¤È¤ò¤³¤Î´Ø¿ô¤ËÅÁ¤¨¤ë¤Ë¤Ï¡¢
76 ¤Ë NULL ¤ò»ØÄꤹ¤ë¤«¡¢
78 ¤Ë 0 ¤ò»ØÄꤹ¤ë¡£Æ±Íͤˡ¢¥µ¡¼¥Ó¥¹Ì¾¤¬ÉÔÍפʾì¹ç¤Ï¡¢
80 ¤Ë NULL ¤ò»ØÄꤹ¤ë¤«¡¢
83 ¤·¤«¤·¡¢¥Û¥¹¥È̾¤È¥µ¡¼¥Ó¥¹Ì¾¤ÎξÊý¤òÉÔÍפÀ¤È»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤
84 (¤¤¤º¤ì¤«°ìÊý¤ÏÍ׵᤹¤ë¤³¤È)¡£
89 ¤ÎÆ°ºî¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£»ØÄê¤Ç¤¤ëÃͤϰʲ¼¤ÎÄ̤ê:
92 »ØÄꤹ¤ë¤È¡¢¥Û¥¹¥È̾¤¬·èÄê¤Ç¤¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¥¨¥é¡¼¤òÊÖ¤¹¡£
95 »ØÄꤹ¤ë¤È¡¢¥¹¥È¥ê¡¼¥à¥Ù¡¼¥¹ (TCP) ¤Ç¤Ê¤¯¥Ç¡¼¥¿¥°¥é¥à¥Ù¡¼¥¹ (UDP)
96 ¤Î¥µ¡¼¥Ó¥¹¤òÂоݤˤ¹¤ë¡£¿ô¤Ï¾¯¤Ê¤¤¤¬¡¢
97 UDP ¤È TCP ¤Ç°ã¤¦¥µ¡¼¥Ó¥¹¤òÄ󶡤·¤Æ¤¤¤ë¥Ý¡¼¥È
98 (512-514) ¤ËÂФ·¤ÆɬÍפȤʤ롣
101 »ØÄꤹ¤ë¤È¡¢¥í¡¼¥«¥ë¤Ê¥Û¥¹¥È¤Ë¤Ï fully qualified domain name (FQDN) ¤Î
102 ¥Û¥¹¥È̾¤ÎÉôʬ¤Î¤ß¤òÊÖ¤¹¡£
105 »ØÄꤹ¤ë¤È¡¢¿ôÃÍ·Á¼°¤Î¥Û¥¹¥È̾¤¬ÊÖ¤µ¤ì¤ë¡£
107 .\" .BR gethostbyaddr ()
111 (»ØÄꤷ¤Ê¤¯¤Æ¤â¡¢¥Î¡¼¥É¤Î̾Á°¤¬·èÄê¤Ç¤¤Ê¤¤¾ì¹ç¤Ï¿ôÃÍ·Á¼°¤¬Ê֤뤳¤È¤¬¤¢¤ë)¡£
112 .\" POSIX.1-2003 has NI_NUMERICSCOPE, but glibc doesn't have it.
115 »ØÄꤹ¤ë¤È¡¢¿ôÃÍ·Á¼°¤Î¥µ¡¼¥Ó¥¹Ì¾ (Î㤨¤Ð¥Ý¡¼¥ÈÈÖ¹æ) ¤¬ÊÖ¤µ¤ì¤ë
116 (»ØÄꤷ¤Ê¤¯¤Æ¤â¡¢¥µ¡¼¥Ó¥¹Ì¾¤¬·èÄê¤Ç¤¤Ê¤¤¾ì¹ç¤Ï¿ôÃÍ·Á¼°¤¬Ê֤뤳¤È¤¬¤¢¤ë)¡£
117 .SS "¹ñºÝ²½¥É¥á¥¤¥ó̾¤Î¤¿¤á¤Î getnameinfo() ¤Î³ÈÄ¥"
121 ¤Ë³ÈÄ¥¤¬¹Ô¤ï¤ì¡¢¥Û¥¹¥È̾¤È
122 ¹ñºÝ²½¥É¥á¥¤¥ó̾ (Internationalized Domain Name; IDN) ·Á¼°¤È¤Î´Ö¤Ç
123 Æ©²áŪ¤ÊÊÑ´¹¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë
124 (IDN ·Á¼°¤Ë¤Ä¤¤¤Æ¤Ï RFC 3490 ¤Î
125 .I "Internationalizing Domain Names in Applications (IDNA)"
126 ¤ò»²¾È)¡£3¤Ä¤Î¥Õ¥é¥°¤¬¿·¤¿¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
129 ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢É¬ÍפǤ¢¤ì¤Ð¡¢¸¡º÷½èÍý¤Ç¸«¤Ä¤«¤Ã¤¿Ì¾Á°¤Ï
130 IDN ·Á¼°¤«¤é¥í¥±¡¼¥ë¤Ë±þ¤¸¤¿Éä¹æ²½·Á¼°¤ËÊÑ´¹¤µ¤ì¤ë¡£
131 ASCII ʸ»ú¤À¤±¤Î̾Á°¤Ï¤³¤ÎÊÑ´¹¤Ç¤Ï±Æ¶Á¤ò¼õ¤±¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢
132 ´û¸¤Î¥×¥í¥°¥é¥à¤ä´Ä¶¤Ç¤³¤Î¥Õ¥é¥°¤ò»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
134 .BR NI_IDN_ALLOW_UNASSIGNED ", " NI_IDN_USE_STD3_ASCII_RULES
135 ¤³¤ì¤é¤Î¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢IDNA ½èÍý¤Ç»ÈÍѤµ¤ì¤ë¥Õ¥é¥°
136 IDNA_ALLOW_UNASSIGNED (̤³ä¤êÅö¤Æ¤Î Unicode ¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤òµöÍÆ) ¤È
137 IDNA_USE_STD3_ASCII_RULES (½ÐÎϤ¬ STD3 ½àµò¤Î¥Û¥¹¥È̾¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë)
138 ¤¬¤½¤ì¤¾¤ì͸ú¤Ë¤Ê¤ë¡£
140 .\" FIXME glibc defines the following additional errors, some which
141 .\" can probably be returned by getnameinfo(); they need to
144 .\" #define EAI_INPROGRESS -100 /* Processing request in progress. */
145 .\" #define EAI_CANCELED -101 /* Request canceled. */
146 .\" #define EAI_NOTCANCELED -102 /* Request not canceled. */
147 .\" #define EAI_ALLDONE -103 /* All requests done. */
148 .\" #define EAI_INTR -104 /* Interrupted by a signal. */
149 .\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
151 À®¸ù¤¹¤ë¤È 0 ¤¬Ê֤ꡢ(Í׵ᤵ¤ì¤Æ¤¤¤ì¤Ð) ¥Î¡¼¥É¤È¥µ¡¼¥Ó¥¹¤Î̾Á°¤¬
152 NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Î·Á¼°¤Ç¤½¤ì¤¾¤ì¤Î»ØÄê¥Ð¥Ã¥Õ¥¡¤ËÊÖ¤µ¤ì¤ë
153 (¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤Ë¤¢¤¦¤è¤¦¤Ë½Ì¤á¤é¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤)¡£
154 ¥¨¥é¡¼¤Î¾ì¹ç¤Ï¡¢°Ê²¼¤Î 0 °Ê³°¤Î¥¨¥é¡¼¡¦¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤ë:
157 »ØÄꤵ¤ì¤¿Ì¾Á°¤¬¸½»þÅÀ¤Ç¤Ï²ò·è¤Ç¤¤Ê¤«¤Ã¤¿¡£
158 ¸å¤ÇºÆ»î¹Ô¤·¤Æ¤ß¤ë¤³¤È¡£
162 °ú¤¿ô¤ËÉÔÀµ¤ÊÃͤ¬Í¿¤¨¤é¤ì¤¿¡£
165 ²óÉü¤Ç¤¤Ê¤¤¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£
168 »ØÄꤷ¤¿¥¢¥É¥ì¥¹¥Õ¥¡¥ß¥ê¡¼¤¬Ç§¼±¤Ç¤¤Ê¤«¤Ã¤¿¡£
169 ¤¢¤ë¤¤¤Ï¥¢¥É¥ì¥¹¤ÎŤµ¤¬»ØÄꤵ¤ì¤¿¥Õ¥¡¥ß¥ê¡¼¤Ë¹ç¤¦¤â¤Î¤Ç¤Ê¤«¤Ã¤¿¡£
175 Í¿¤¨¤é¤ì¤¿¥Ñ¥é¥á¡¼¥¿¤Ç¤Ï̾Á°¤¬²ò·è¤Ç¤¤Ê¤¤¡£
177 ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤¿¤¬¥Û¥¹¥È̾¤¬·èÄê¤Ç¤¤Ê¤«¤Ã¤¿¤«¡¢
178 ¥Û¥¹¥È̾¤â¥µ¡¼¥Ó¥¹Ì¾¤âÍ׵ᤵ¤ì¤Ê¤«¤Ã¤¿¡£
184 ¤¬»Ø¤·¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¤¬¾®¤µ¤¹¤®¤¿¡£
187 ¥·¥¹¥Æ¥à¥¨¥é¡¼¤¬µ¯¤Ã¤¿¡£
193 ´Ø¿ô¤ò»È¤¦¤È¡¢¤³¤ì¤é¤Î¥¨¥é¡¼¡¦¥³¡¼¥É¤ò¡¢¥¨¥é¡¼¡¦¥ì¥Ý¡¼¥È¤ËŬ¤·¤¿
194 ¿Í´Ö¤¬Æɤߤ䤹¤¤Ê¸»úÎó¤ËËÝÌõ¤·¤Æ¤¯¤ì¤ë¡£
203 ¤Ï¡¢glibc ¥Ð¡¼¥¸¥ç¥ó 2.1 °Ê¹ß¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£
205 RFC\ 2553, POSIX.1-2001.
207 ŬÀڤʥХåե¡¥µ¥¤¥º¤òÁªÂò¤Ç¤¤ë¤è¤¦¤Ë¡¢
209 ¤Ë°Ê²¼¤ÎÄê¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
213 #define NI_MAXHOST 1025
214 #define NI_MAXSERV 32
218 glibc 2.8 °Ê¹ß¤Ç¤Ï¡¢µ¡Ç½¸¡ºº¥Þ¥¯¥í
222 ¤Î¤¤¤º¤ì¤«¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë¤Î¤ß¡¢¤³¤ì¤é¤ÎÄêµÁ¤¬¸ø³«¤µ¤ì¤ë¡£
224 Á°¼Ô¤Ï¡¢ºÇ¶á¤Î¥Ð¡¼¥¸¥ç¥ó¤Î BIND ¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë
229 ¸å¼Ô¤Ï¡¢³ä¤êÅö¤ÆºÑ¤Î¿ôÃͤˤĤ¤¤Æµ¤·¤¿¸½ºß¤Î RFC ¤Ë
230 Îóµó¤µ¤ì¤Æ¥µ¡¼¥Ó¥¹¤«¤é¿äÎ̤·¤¿ÃͤǤ¢¤ë¡£
232 °Ê²¼¤Î¥³¡¼¥É¤Ï¡¢»ØÄꤵ¤ì¤¿¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤ËÂФ¹¤ë
233 ¥Û¥¹¥È¤È¥µ¡¼¥Ó¥¹¤Î¿ôÃÍɽ¼°¤ò¼èÆÀ¤·¤è¤¦¤È»î¤ß¤ë¡£
234 ÆÃÄê¤Î¥¢¥É¥ì¥¹¥Õ¥¡¥ß¥ê¡¼¤ËÂФ¹¤ë»²¾È¾ðÊó¤Ï
235 °ìÀڥϡ¼¥É¥³¡¼¥É¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃåÌܤ·¤Æ¤Û¤·¤¤¡£
239 struct sockaddr *sa; /* input */
240 socklen_t len; /* input */
241 char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
243 if (getnameinfo(sa, len, hbuf, sizeof(hbuf), sbuf,
244 sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
245 printf("host=%s, serv=%s\en", hbuf, sbuf);
249 °Ê²¼¤Ç¤Ï¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤Ë
250 µÕ¸þ¤¤Î¥¢¥É¥ì¥¹¥Þ¥Ã¥Ô¥ó¥°¤¬Â¸ºß¤¹¤ë¤«¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¤¤ë¡£
254 struct sockaddr *sa; /* input */
255 socklen_t len; /* input */
256 char hbuf[NI_MAXHOST];
258 if (getnameinfo(sa, len, hbuf, sizeof(hbuf),
259 NULL, 0, NI_NAMEREQD))
260 printf("could not resolve hostname");
262 printf("host=%s\en", hbuf);
267 ¤ò»È¤Ã¤¿¥×¥í¥°¥é¥àÎ㤬
277 .BR gethostbyaddr (3),
278 .BR getservbyname (3),
279 .BR getservbyport (3),
286 R. Gilligan, S. Thomson, J. Bound and W. Stevens,
287 .IR "Basic Socket Interface Extensions for IPv6" ,
288 RFC\ 2553, March 1999.
290 Tatsuya Jinmei and Atsushi Onoe,
291 .IR "An Extension of Format for IPv6 Scoped Addresses" ,
292 internet draft, work in progress.
293 ftp://ftp.ietf.org/internet\-drafts/draft\-ietf\-ipngwg\-scopedaddr\-format\-02.txt
296 .IR "Protocol Independence Using the Sockets API" ,
297 Proceedings of the freenix track:
298 2000 USENIX annual technical conference, June 2000.
299 http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/metzprotocol.html