connect

Autres langues

Langue: ja

Version: 2004-06-23 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

̾Á°

connect - ¥½¥±¥Ã¥È¤ÎÀܳ¤ò¹Ô¤¦

½ñ¼°


#include <sys/types.h>


#include <sys/socket.h> int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);

ÀâÌÀ

connect() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ sockfd ¤¬»²¾È¤·¤Æ¤¤¤ë¥½¥±¥Ã¥È¤ò serv_addr ¤Ç»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤ËÀܳ¤¹¤ë¡£ addrlen °ú¤­¿ô¤Ï serv_addr ¤ÎÂ礭¤µ¤ò¼¨¤¹¡£ serv_addr ¤Î¥¢¥É¥ì¥¹¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¥½¥±¥Ã¥È sockfd ¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¤è¤ê°Û¤Ê¤ë¡£ ¤µ¤é¤Ê¤ë¾ÜºÙ¤Ï socket(2) ¤ò»²¾È¤Î¤³¤È¡£

¥½¥±¥Ã¥È sockfd ¤¬ SOCK_DGRAM ·¿¤Ç¤¢¤ì¤Ð¡¢ serv_addr ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥Ç¡¼¥¿¥°¥é¥à¤ÎÁ÷¿®Àè¤Î¥¢¥É¥ì¥¹¤Ç¤¢¤ê¡¢ ¥Ç¡¼¥¿¥°¥é¥à¤ò¼õ¿®¤¹¤ëÍ£°ì¤Î¥¢¥É¥ì¥¹¤ò¼¨¤¹¤Ë²á¤®¤Ê¤¤¡£ ¥½¥±¥Ã¥È¤¬ SOCK_STREAM ·¿¤â¤·¤¯¤Ï SOCK_SEQPACKET ·¿¤Ç¤¢¤ì¤Ð¡¢¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï serv_addr ¤Ç»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿¥½¥±¥Ã¥È¤ËÂФ¹¤ëÀܳ¤Î ºîÀ®¤ò»î¤ß¤ë¡£

°ìÈÌŪ¤Ë¡¢Àܳ»Ø¸þ (connection-oriented) ¥×¥í¥È¥³¥ë¤Ç¤Ï°ìÅÙ¤À¤± connect() ¤¬À®¸ù¤¹¤ë¡£ ÈóÀܳ (connectionless) ¥×¥í¥È¥³¥ë¤Ç¤ÏÂбþ¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë²¿ÅÙ¤â connect() ¤ò»ÈÍѤǤ­¤ë¡£ ÈóÀܳ¥½¥±¥Ã¥È¤Ï sockaddr ¤Î sa_family ¥á¥ó¥Ð¤Ë AF_UNSPEC ¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢Àܳ¥¢¥É¥ì¥¹¤ÎÂбþ¤ò²ò¾Ã¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

ÊÖ¤êÃÍ

Àܳ¤Þ¤¿¤ÏÂбþ¤Å¤±¤ËÀ®¸ù¤¹¤ë¤È¥¼¥í¤òÊÖ¤¹¡£ ¼ºÇÔ¤¹¤ë¤È -1 ¤òÊÖ¤·¡¢ errno ¤ËŬÀÚ¤ÊÃͤòÀßÄꤹ¤ë¡£

¥¨¥é¡¼

°Ê²¼¤Ï°ìÈÌŪ¤Ê¥½¥±¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Î¥¨¥é¡¼¤Ç¤¢¤ë¡£Â¾¤Ë¥É¥á¥¤¥óÆÃÍ­¤Î¥¨¥é¡¼ ¤¬È¯À¸¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
EACCES
Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¤Ï¥Ñ¥¹Ì¾¤Ç¼±Ê̤µ¤ì¤ë¡£ ¥½¥±¥Ã¥È¡¦¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¤­¹þ¤ßµö²Ä¤¬¤Ê¤«¤Ã¤¿¤«¡¢¥Ñ¥¹Ì¾¤Ø Åþ㤹¤ë¤Þ¤Ç¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¤¤¤º¤ì¤«¤ËÂФ¹¤ë¸¡º÷µö²Ä¤¬¤Ê¤«¤Ã¤¿¡£ (path_resolution(7) ¤â»²¾È¤Î¤³¤È)
EACCES, EPERM
¥½¥±¥Ã¥È¤Î¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¡¦¥Õ¥é¥°¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ë ¥æ¡¼¥¶¤¬¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤ØÀܳ¤ò»î¤ß¤¿¡£¤Þ¤¿¤Ï¡¢¥í¡¼¥«¥ë¤Î¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤Î µ¬Â§¤Ë¤è¤êÀܳ¤ÎÍ׵᤬¼ºÇÔ¤·¤¿¡£
EADDRINUSE
¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤¬´û¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£
EAFNOSUPPORT
ÅϤµ¤ì¤¿¥¢¥É¥ì¥¹¤Î sa_family ¥Õ¥£¡¼¥ë¥É¤¬Àµ¤·¤¤¥¢¥É¥ì¥¹¡¦¥Õ¥¡¥ß¥ê¡¼¤Ç¤Ï¤Ê¤¤¡£
EAGAIN
»ÈÍѲÄǽ¤Ê¥í¡¼¥«¥ë¤Î¥Ý¡¼¥È¤¬¤Ê¤¤¤«¡¢ ¥ë¡¼¥Æ¥£¥ó¥°¥­¥ã¥Ã¥·¥å¤Ë½½Ê¬¤Ê¥¨¥ó¥È¥ê¤¬¤Ê¤¤¡£ PF_INET ¤Î¾ì¹ç¤Ë¡¢¤É¤¦¤ä¤Ã¤Æ¥í¡¼¥«¥ë¥Ý¡¼¥È¤òÁý¤ä¤¹¤«¤Ë´Ø¤·¤Æ¤Ï ip(7) ¤Î net.ipv4.ip_local_port_range sysctl ¤ò»²¾È¤Î¤³¤È¡£
EALREADY
¥½¥±¥Ã¥È¤¬ÈóÄä»ß (non-blocking) ¤ËÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢ Á°¤ÎÀܳ¤¬´°Î»¤·¤Æ¤¤¤Ê¤¤¡£
EBADF
¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤¬¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¥Æ¡¼¥Ö¥ë¤Î Í­¸ú¤Ê¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï¤Ê¤¤¡£
ECONNREFUSED
¥ê¥â¡¼¥È¥¢¥É¥ì¥¹¤ÇÀܳ¤òÂԤäƤ¤¤ë¥×¥í¥°¥é¥à¤¬¤Ê¤¤¡£
EFAULT
¥½¥±¥Ã¥È¹½Â¤ÂΤΥ¢¥É¥ì¥¹¤¬¥æ¡¼¥¶¡¼¤Î¥¢¥É¥ì¥¹¶õ´Ö³°¤Ë¤¢¤ë¡£
EINPROGRESS
¥½¥±¥Ã¥È¤¬ÈóÄä»ß (non-blocking) ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Æ¡¢Àܳ¤ò¤¹¤°¤Ë ´°Î»¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£¤½¤Î¾ì¹ç¡¢ select(2) ¤ä poll(2) ¤ò»È¤Ã¤Æ¤½¤Î¥½¥±¥Ã¥È¤¬½ñ¤­¹þ¤ß²Äǽ¤Ë¤Ê¤ë¤Î¤òÂԤĤ³¤È¤Ç¡¢ Àܳ¤Î´°Î»¤òÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£ select(2) ¤Ç½ñ¤­¹þ¤ß²Äǽ¤Ë¤Ê¤Ã¤¿¸å¤Ë¡¢ getsockopt(2) ¤ò»È¤Ã¤Æ SOL_SOCKET ¥ì¥Ù¥ë¤Ç SO_ERROR ¥ª¥×¥·¥ç¥ó¤òÆɤ߽Ф¹¤³ ¤È¤Ë¤è¤ê¡¢ connect() ¤¬À®¸ù¤·¤¿¤«¡¢¼ºÇÔ¤·¤¿¤«¤òȽÃǤǤ­¤ë¡£ À®¸ù¤Î¾ì¹ç SO_ERROR ¤¬ 0 ¤Ç¤¢¤ê¡¢ ¼ºÇԤξì¹ç SO_ERROR ¤¬¤³¤³¤Î¥ê¥¹¥È¤Ë¤¢¤ë¤¤¤º¤ì¤«¤Î¥¨¥é¡¼¥³¡¼¥É¤Ç¤¢¤ê¡¢ ¤½¤ì¤Ë¤è¤ê¼ºÇԤθ¶°ø¤¬Ê¬¤«¤ë¡£
EINTR
Ê᪤µ¤ì¤¿¥·¥°¥Ê¥ë¤Ë¤è¤ê¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬ÃæÃǤµ¤ì¤¿¡£
EISCONN
¥½¥±¥Ã¥È¤Ï´û¤ËÀܳ (connect) ¤µ¤ì¤Æ¤¤¤ë¡£
ENETUNREACH
Åþã¤Ç¤­¤Ê¤¤¥Í¥Ã¥È¥ï¡¼¥¯¤Ç¤¢¤ë¡£
ENOTSOCK
¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤¬¥½¥±¥Ã¥È¤È´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¤¡£
ETIMEDOUT
Àܳ¤ò»î¤ß¤Æ¤¤¤ëÅÓÃæ¤Ç»þ´ÖÀÚ¤ì (timeout) ¤Ë¤Ê¤Ã¤¿¡£¥µ¡¼¥Ð¡¼¤¬º®»¨¤·¤Æ¤¤¤Æ ¿·¤¿¤ÊÀܳ¤ò¼õ¤±Æþ¤ì¤é¤ì¤Ê¤¤¤Î¤«¤â¤·¤ì¤Ê¤¤¡£ IP ¥½¥±¥Ã¥È¤Ç¤Ï¡¢ syncookie ¤¬¥µ¡¼¥Ð¡¼¤ÇÍ­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢ ¥¿¥¤¥à¥¢¥¦¥È¤¬Èó¾ï¤ËŤ¯¤Ê¤ë¾ì¹ç¤¬¤¢¤ë¤Î¤ÇÃí°Õ¤¹¤ë¤³¤È¡£

½àµò

SVr4, 4.4BSD, (connect() ´Ø¿ô¤Ï 4.2BSD ¤ÇºÇ½é¤ËÅо줷¤¿), POSIX.1-2001.

Ãí°Õ

connect() ¤Î»°ÈÖÌܤΰú¤­¿ô¤Ï 4.x BSD ¤ä libc4, libc5 ¤ÈƱÍÍ¤Ë¼ÂºÝ¤Ë¤Ï int ¤Ç¤¢¤ë¡£ POSIX ¤Ç¤Ïäþ;¶ÊÀÞ¤ò·Ð¤Æ¸½ºß¤Î socklen_t ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢ glibc ¤Ç¤â socklen_t ¤ò»È¤Ã¤Æ¤¤¤ë¡£ accept(2) ¤â»²¾È¤Î¤³¤È¡£

¥Ð¥°

AF_UNSPEC ¥¢¥É¥ì¥¹¤ò»ØÄꤷ¤Æ connect() ¤ò¸Æ¤Ö¤³¤È¤Ë¤è¤ê¥½¥±¥Ã¥È¤ÎÀܳ¤ò²ò¾Ã¤¹¤ëµ¡Ç½¤Ï¤Þ¤À¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

Îã

connect() ¤ÎÍøÍÑÎ㤬 getaddrinfo(3) ¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡£

´ØÏ¢¹àÌÜ

accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7)