|
|||||||
|
|
getaddrinfoSection: Linux Programmer's Manual (3)Updated: Dec 18, 2000 Index Return to Main Contents ̾Á°getaddrinfo - ¥Í¥Ã¥È¥ï¡¼¥¯¤Î¥¢¥É¥ì¥¹¤È¥µ¡¼¥Ó¥¹¤òÊÑ´¹¤¹¤ë½ñ¼°#include <sys/types.h> #include <sys/socket.h> #include <netdb.h> int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); void freeaddrinfo(struct addrinfo *res); char *gai_strerror(int errcode); ÀâÌÀgetaddrinfo(3) ´Ø¿ô¤Ï¡¢4 ¤Ä¤Î´Ø¿ô getipnodebyname(3), getipnodebyaddr(3), getservbyname(3), getservbyport(3) ¤Îµ¡Ç½¤ò¤Þ¤È¤á¤Æ°ì¤Ä¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£ getaddrinfo(3) ´Ø¿ô¤Ï¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¡¢ ¤Ò¤È¤Ä°Ê¾å¤Î¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¹½Â¤ÂΤòÀ¸À®¤¹¤ë¡£ ¤³¤Î¹½Â¤ÂÎ¤Ï bind(2) ¤ä connect(2) ¤Ê¤É¤Î´Ø¿ô¥³¡¼¥ë¤Ç¥¯¥é¥¤¥¢¥ó¥ÈÍÑ¡¦¥µ¡¼¥Ð¡¼ÍѤΥ½¥±¥Ã¥È¤òÀ¸À®¤¹¤ëºÝ¤Ë ÍѤ¤¤ë¤³¤È¤¬¤Ç¤¤ë¡£getaddrinfo(3) ´Ø¿ô¤¬ºî¤ë¤³¤È¤Î¤Ç¤¤ë¤Î¤Ï IPv4 ¥¢¥É¥ì¥¹¹½Â¤ÂΤÀ¤±¤Ç¤Ï¤Ê¤¤¡£ IPv6 ¤Î¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ê¤é IPv6 ¤Î¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¹½Â¤ÂΤâÀ¸À®¤Ç¤¤ë¡£ ¤³¤ì¤é¤Î¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¹½Â¤ÂΤϡ¢ ¥¯¥é¥¤¥¢¥ó¥È¤ä¥µ¡¼¥Ð¡¼¤Ç¥½¥±¥Ã¥È¤ò½àÈ÷¤¹¤ëºÝ¤Ë¡¢ bind(2) ¤ä connect(2) ¤«¤éľÀÜÍøÍѤǤ¤ë¡£ ¤³¤Î´Ø¿ô¤¬ÍѤ¤¤ë addrinfo ¹½Â¤ÂΤˤϰʲ¼¤Î¥á¥ó¥Ð¡¼¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname;
struct addrinfo *ai_next;
};
getaddrinfo(3) ¤Ï¡¢ ai_next ¥á¥ó¥Ð¡¼¤Ç¥ê¥ó¥¯¤µ¤ì¤¿ addrinfo ¹½Â¤ÂΤΥê¥ó¥¯¥ê¥¹¥È¤ò¥á¥â¥ê¾å¤ËưŪ³ä¤êÅö¤Æ¤Ë¤è¤Ã¤ÆºîÀ®¤·¡¢ res ¤Ë¤½¤ÎÀèÆ¬¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÀßÄꤹ¤ë¡£ Ê£¿ô¤Î addrinfo ¹½Â¤ÂΤ«¤é¤Ê¤ë¥ê¥ó¥¯¥ê¥¹¥È¤òÍѤ¤¤ë¤³¤È¤Ë¤·¤¿¤Î¤Ë¤ÏÍýͳ¤¬¤¢¤ë¡£ Î㤨¤Ð¡¢¥Í¥Ã¥È¥ï¡¼¥¯¥Û¥¹¥È¤¬¥Þ¥ë¥Á¥Û¡¼¥à¤Î¾ì¹ç¤ä¡¢ Ê£¿ô¤Î¥½¥±¥Ã¥È¥×¥í¥È¥³¥ë¤ÇƱ¤¸¥µ¡¼¥Ó¥¹¤¬»È¤¨¤ë (¤Ò¤È¤Ä¤¬ SOCK_STREM ¥¢¥É¥ì¥¹¤Ç¡¢¤â¤¦¤Ò¤È¤Ä¤¬ SOCK_DGRAM ¥¢¥É¥ì¥¹¤Ç¤¢¤ë¤Ê¤É) ¾ì¹ç¤ËÅԹ礬¤¤¤¤¤«¤é¤Ç¤¢¤ë¡£ ai_family, ai_socktype, ai_protocol ¥á¥ó¥Ð¡¼¤Ï¡¢¤½¤ì¤¾¤ì socket(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÂбþ¤¹¤ë°ú¤¿ô¤ÈƱ¤¸°ÕÌ£¤ò»ý¤Ä¡£ getaddrinfo(3) ´Ø¿ô¤Ï IPv4 ¤¢¤ë¤¤¤Ï IPv6 ¥¢¥É¥ì¥¹¥Õ¥¡¥ß¥ê¡¼¤Î¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤òÊÖ¤¹ (ai_family ¤¬ PF_INET ¤Þ¤¿¤Ï PF_INET6 ¤Î¤¤¤º¤ì¤«¤Ë¥»¥Ã¥È¤µ¤ì¤ë)¡£ hints ¥Ñ¥é¥á¡¼¥¿¤Ë¤Ï¡¢Í¥À褵¤»¤¿¤¤¥½¥±¥Ã¥È¤Î¥¿¥¤¥× (¤¢¤ë¤¤¤Ï¥×¥í¥È¥³¥ë) ¤ò»ØÄꤹ¤ë¡£ hints ¤ò NULL ¤Ë¤¹¤ë¤³¤È¤Ï¡¢Á´¤Æ¤Î¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹/¥×¥í¥È¥³¥ë¤¬ ¼õ¤±Æþ¤ì²Äǽ¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¤³¤Î¥Ñ¥é¥á¡¼¥¿¤¬ NULL ¤Ç¤Ê¤¤¤È¤¤Ï¡¢ addrinfo ¹½Â¤ÂΤò¥Ý¥¤¥ó¥È¤¹¤ë¤è¤¦¤Ë¤¹¤ë¡£ ¤³¤Î¹½Â¤ÂΤΠai_familiy, ai_socktype, ai_protocol ¥á¥ó¥Ð¡¼¤Ç¡¢Í¥À褵¤ì¤ë¥½¥±¥Ã¥È¥¿¥¤¥×¤Ê¤É¤ò»ØÄꤹ¤ë¡£ ai_family ¤Ë PF_UNSPEC ¤ò»ØÄꤹ¤ë¤È¡¢Ç¤°Õ¤Î¥×¥í¥È¥³¥ë¥Õ¥¡¥ß¥ê¡¼¤ò°ÕÌ£¤¹¤ë (Î㤨¤Ð IPv4 ¤ä IPv6)¡£ ai_socktype ¤È ai_protocol ¤Ë 0 ¤ò»ØÄꤹ¤ë¤È¡¢ ƱÍͤËǤ°Õ¤Î¥½¥±¥Ã¥È¥¿¥¤¥×¤ä¥×¥í¥È¥³¥ë¤ò¼õÉÕ¤±¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ai_flags ¥á¥ó¥Ð¡¼¤Ë¤ÏÄɲ媥ץ·¥ç¥ó¤ò»ØÄꤹ¤ë (ÄêµÁ¤Ï°Ê²¼)¡£ Ê£¿ô¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢¤½¤ì¤é¤ÎÏÀÍý OR ¤ò¤È¤Ã¤Æ»ØÄꤹ¤ì¤Ð¤è¤¤¡£ hints ¥Ñ¥é¥á¡¼¥¿¤Î¤½¤Î¾¤Î¥á¥ó¥Ð¡¼¤Ë¤Ï¡¢ 0 (¤Þ¤¿¤Ï¥Ì¥ë¡¦¥Ý¥¤¥ó¥¿¡¼) ¤òÆþ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ node ¥Ñ¥é¥á¡¼¥¿¤È service ¥Ñ¥é¥á¡¼¥¿¤Î¤É¤Á¤é¤«¤Ï NULL ¤Ë¤·¤Æ¤è¤¤ (ξÊýƱ»þ¤Ë¤ÏÉÔ²Ä)¡£ node ¤Ë¤Ï¿ôÃÍ·Á¼°¤Î¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹ (IPv4 ¤Ê¤é¥É¥Ã¥È¶èÀÚ¤ê¤Î 10 ¿Ê·Á¼°¡¢ IPv6 ¤Ê¤é 16 ¿Ê·Á¼°) ¤«¡¢¤¢¤ë¤¤¤Ï¥Í¥Ã¥È¥ï¡¼¥¯¥Û¥¹¥È¤Î̾Á°¤ò»ØÄꤹ¤ë¡£ ¸å¼Ô¤Î¾ì¹ç¤Ï¡¢¤½¤Î̾Á°¤¬°ú¤±¤Æ¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤Î²ò·è¤¬¤Ç¤¤ëɬÍפ¬¤¢¤ë¡£ hints ¥Ñ¥é¥á¡¼¥¿¤Î ai_flags ¥á¥ó¥Ð¡¼¤Ë AI_NUMERICHOST ¥Õ¥é¥°¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ node ¥Ñ¥é¥á¡¼¥¿¤Ï¿ôÃÍŪ¤Ê¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ AI_NUMERICHOST ¥Õ¥é¥°¤ò»È¤¨¤Ð¡¢ ¥Û¥¹¥È¤Î̾Á°°ú¤¡¦¥¢¥É¥ì¥¹²ò·è¤ËĹ»þ´Ö¤«¤«¤Ã¤Æ¤·¤Þ¤¦²ÄǽÀ¤òÇÓ½ü¤Ç¤¤ë¡£ getaddrinfo(3) ´Ø¿ô¤Ï addrinfo ¹½Â¤ÂΤΥê¥ó¥¯¥ê¥¹¥È¤òÀ¸À®¤¹¤ë¤¬¡¢ ¤½¤ÎÆâÉô¤Ç¤Î³Æ¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤Ï hints ¥Ñ¥é¥á¡¼¥¿¤Ë¤è¤Ã¤ÆÄê¤á¤é¤ì¤¿¤¢¤é¤æ¤ëÀ©¸Â¤Ë½¾¤¦¤³¤È¤Ë¤Ê¤ë¡£ hints ¤Ë AI_CANONNAME ¥Õ¥é¥°¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ ai_cannonname ¤Ï¥Û¥¹¥È¤Î¥ª¥Õ¥£¥·¥ã¥ë¤Ê̾Á°¤ò¥Ý¥¤¥ó¥È¤¹¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤ë¡£ ai_family, ai_socktype, ai_protocol ³Æ¥á¥ó¥Ð¡¼¤Ï¥½¥±¥Ã¥ÈÀ¸À®»þ¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ØÄꤹ¤ë¡£ ai_addr ¥á¥ó¥Ð¡¼¤Ë¤Ï¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬½ñ¤¹þ¤Þ¤ì¡¢ ai_addrlen ¥á¥ó¥Ð¡¼¤Ë¤Ï¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤ÎŤµ (¥Ð¥¤¥Èñ°Ì) ¤¬½ñ¤¹þ¤Þ¤ì¤ë¡£ node ¤¬ NULL ¤Î¾ì¹ç¤Ï¡¢³Æ¥½¥±¥Ã¥È¹½Â¤ÂΤΥͥåȥ¥¯¥¢¥É¥ì¥¹¤Î½é´ü²½¤Ï AI_PASSIVE ¥Õ¥é¥°¤Ë´ð¤Å¤¤¤Æ½èÍý¤µ¤ì¤ë (¤³¤Î¥Õ¥é¥°¤Ï hints ¥Ñ¥é¥á¡¼¥¿¤Î ai_flags ¥á¥ó¥Ð¡¼¤ËÀßÄꤵ¤ì¤ë)¡£ AI_PASSIVE ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤¿¤é¡¢ ³Æ¥½¥±¥Ã¥È¹½Â¤ÂΤΥͥåȥ¥¯¥¢¥É¥ì¥¹¤Ï»ØÄꤵ¤ì¤Ê¤¤¤Þ¤Þ¤Ë¤Ê¤ë¡£ ¤³¤ì¤ÏǤ°Õ¤Î¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤«¤é¤Î¥¯¥é¥¤¥¢¥ó¥ÈÀܳ¤òÂÔ¤Á¼õ¤±¤ë¤è¤¦¤Ê ¥µ¡¼¥Ð¡¼¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÇÍѤ¤¤é¤ì¤ë¡£ AI_PASSIVE ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢ ¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤Ï loopback ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥¢¥É¥ì¥¹¤ËÀßÄꤵ¤ì¤ë¡£ ¤³¤ì¤Ï¸½ºß¤Î¥Û¥¹¥È¾å¤Çưºî¤·¤Æ¤¤¤ë¥µ¡¼¥Ð¡¼¤ËÀܳ¤¹¤ë¤³¤È¤ò°Õ¿Þ¤·¤Æ¤¤¤ë ¥¯¥é¥¤¥¢¥ó¥È¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÇÍѤ¤¤é¤ì¤ë¡£ service ¤Ï¡¢³Æ¥½¥±¥Ã¥È¹½Â¤ÂΤΥͥåȥ¥¯¥¢¥É¥ì¥¹¤Î¥Ý¡¼¥ÈÈÖ¹æ¤òÀßÄꤹ¤ë¡£ service ¤¬ NULL ¤Ê¤é¥Ý¡¼¥ÈÈÖ¹æ¤ò½é´ü²½¤·¤Ê¤¤¤Þ¤Þ¤Ë¤¹¤ë¡£ freeaddrinfo(3) ´Ø¿ô¤Ï¡¢ res ¤¬¥Ý¥¤¥ó¥È¤¹¤ë¥ê¥ó¥¯¥ê¥¹¥È¤ËưŪ¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¤ò²òÊü¤¹¤ë¡£ ÊÖ¤êÃÍgetaddrinfo(3) ¤ÏÀ®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È°Ê²¼¤ÎÈó 0 ¤Î¥¨¥é¡¼¥³¡¼¥É¤Î¤¤¤º¤ì¤«¤òÊÖ¤¹¡£
gai_strerror(3) ´Ø¿ô¤òÍѤ¤¤ë¤È¡¢¤³¤ì¤é¤Î¥¨¥é¡¼¥³¡¼¥É¤ò¿Í´Ö¤Ë²ÄÆÉ¤Êʸ»úÎó¤ËÊÑ´¹¤Ç¤¤ë¤Î¤Ç¡¢ ¥¨¥é¡¼Êó¹ð¤ËŬ¤¹¤ë¤À¤í¤¦¡£ ´ØÏ¢¹àÌÜgetipnodebyname(3), getipnodebyaddr(3)
Index | ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man3". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |