winsock api : connect - ¼­¹ö·Î ¿¬°áÇÑ´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¸Þ´º¾ó>winsock API>connect



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

connect

connect ÇÔ¼ö´Â ÁöÁ¤µÈ ¼ÒÄÏÀ¸·Î ¿¬°áÀ» ½ÃµµÇÑ´Ù.

»ç¿ë¹ý

int connect  
{ 
  __in  SOCKET s, 
  __in  const struct sockaddr *name, 
  __in  int namelen 
}; 
 

¸Å°³º¯¼ö

  • s
    ¿¬°áµÇÁö ¾ÊÀº ¼ÒÄÏ ±â¼úÀÚ
  • name
    ¿¬°áÁ¤º¸¸¦ ´ã°í ÀÖ´Â sockaddr ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ
  • namelen
    sockaddr ±¸Á¶Ã¼ Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â µ¥ÀÌÅÍÀÇ Å©±â

¹Ýȯ °ª

¿¡·¯°¡ ¾Æ´Ï¸é 0À» ¹ÝȯÇÑ´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì SOCKET_ERROR¸¦ ¹ÝȯÇÑ´Ù.

ºÀ¼â(blocking) ¼ÒÄÏÀÏ °æ¿ì ¿¬°á½Ãµµ½ÃÀÇ ½ÇÆÐ ȤÀº ¼º°ø °ªÀ» ¸®ÅÏÇÑ´Ù.

ºñºÀ¼â(nonblocking) ¼ÒÄÏÀÏ °æ¿ì ¿¬°á½Ãµµ½Ã Á¢¼ÓÀÌ ÀÌ·ç¾îÁöÁö ¾ÊÀ» ¶§°¡ ÀÖ´Ù. ÀÌ °æ¿ì connect ÇÔ¼ö´Â WSAEWOULDBLOCK ¿¡·¯Äڵ带 ¹ß»ýÇÑ´Ù. ¿¡·¯Äڵ尡 »ý¼ºµÇ¾úÁö¸¸ Á¢¼ÓÀº °è¼Ó ÁøÇàÁßÀ̹ǷΠÁ¢¼Ó¿¡·¯¶ó°í º¼ ¼ö´Â ¾ø´Ù. ÀÌ °æ¿ì 3°¡Áö ó¸® ½Ã³ª¸®¿À°¡ ÀÖ´Ù.
  • select ÇÔ¼ö¸¦ »ç¿ëÇßÀ» °æ¿ì ¼ÒÄÏ¿¡ write ÇÒ ¶§, ¿¬°áÀÌ ¼º°øÇß´ÂÁö °Ë»çÇÒ ¼ö ÀÖ´Ù.
  • WSAAsyncSelect ÇÔ¼ö¸¦ »ç¿ëÇß´Ù¸é Á¢¼Ó À̺¥Æ®·Î FD_CONNECT°¡ ¹ß»ýÇÑ´Ù. À̶§ ¿¬°áÀ» °Ë»çÇÏ¸é µÈ´Ù.
  • If the application is using WSAEventSelect to indicate interest in connection events, then the associated event object will be signaled indicating that the connect operation is complete (successfully or not).

¿¡·¯ ÄÚµå

WSANOTINITIALISED WSAStartup¸¦ ¼º°øÀûÀ¸·Î È£ÃâÇÑ ÀûÀÌ ¾ø´Ù.
WSAENETDOWN ³×Æ®¿öÅ© ¼­ºñ½º½ÃÅÛ¿¡ ¹®Á¦°¡ »ý°å´Ù.
WSAEADDRINUSE ÁöÁ¤ÇÑ ÁÖ¼Ò°¡ ÀÌ¹Ì »ç¿ëµÇ°í ÀÖ´Ù. SO_REUSEADDR¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
WSAEINTR ºí·°Å· À©¼Ó v1.1ÀÌ WSACancelBlockingCall() ÇÔ¼ö¿¡ ÀÇÇØ Ãë¼ÒµÇ¾ú´Ù. |
WSAEINPROGRESS ºí·°Å· À©¼Ó v1.1ÀÌ ÇöÀç ÁøÇàÁßÀ̰ųª ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ ÄݹéÇÔ¼ö¸¦ ¿©ÀüÈ÷ ó¸®Çϰí ÀÖ´Ù.
WSAEALREADY ÁöÁ¤µÈ ¼ÒÄÏ¿¡¼­ ºñµ¿±â connect È£ÃâÀÌ ÁøÇàµÇ°í ÀÖ´Ù.
WSAEFAULT name ȤÀº namelen ¸Å°³º¯¼ö°¡ ¿Ã¹Ù¸£Áö ¾Ê´Ù.
WSAENETUNREACH ÁöÁ¤µÈ ³×Æ®¿öÅ©·Î ¿¬°áÇÒ ¼ö ¾ø´Ù.
WSAENOBUFS ¹öÆÛ°ø°£ÀÌ ³²¾ÆÀÖÁö ¾Ê¾Æ¼­ ¿¬°áÇÒ ¼ö ¾ø´Ù.
WSAENOTSOCK ±â¼úÀÚ°¡ ¼ÒÄÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
WSAETIMEDOUT Á¢¼Ó ½Ã°£ÀÌ ÃʰúÇß´Ù.
WSAEACCES SO_BROADCASTÀ» ¼³Á¤ÇÏÁö ¾Ê°í, broadcaset ÁÖ¼Ò¸¦ ÁöÁ¤Çß´Ù.

¼³¸í

connect ÇÔ¼ö´Â ¸í½ÃµÈ È£½ºÆ®·ÎÀÇ Á¢¼ÓÀ» ½ÃµµÇÑ´Ù. ¼ÒÄÏ ±â¼úÀÚ SOCKET s °¡ bindµÇÁö ¾Ê¾Ò´Ù¸é, ÀÎÅÍÆäÀ̽º ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£¸¦ ¼ÒÄÏ¿¡ bind ÇÑ´Ù. ÀÌ´Â INADDR_ANY ÁÖ¼Ò¿Í 0¹ø Æ÷Æ®·Î bind ÇÑ °Í°ú ºñ½ÁÇÏ´Ù. Ŭ¶óÀ̾ðÆ®ÀÇ °æ¿ì bind()ÇÏÁö ¾Ê°í connect()¸¦ È£ÃâÇÏ´Â °æ¿ì°¡ ¸¹Àºµ¥, ÀÌ ¶§¹®¿¡ ÀÓÀÇÀÇ Æ÷Æ®ÁÖ¼Ò°¡ ÇÒ´çÀÌ µÈ´Ù.

ºñ ¿¬°á ÁöÇâ ¼ÒÄÏ (SOCK_DGRAM)¿¡¼­ connect´Â ´ÜÁö send(), recv() ÇÔ¼ö¿¡ ´ëÇÑ ±âº» (default) ¸ñÀûÁö ÁÖ¼Ò¸¦ ¸í½ÃÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù. ¸¸¾à send,recv ÇÔ¼öÀÇ ÁÖ¼Ò°¡ 0À¸·Î ¼³Á¤µÇ¸é, connect¿¡¼­ ¸í½ÃµÈ ÁÖ¼Ò·Î Åë½ÅÀ» ÇÑ´Ù.

¿¹Á¦

WSADATA wsaData; 
sockaddr_in serveraddr; 
 
WSAStartup(MAKEWORD(2,2), &wsaData); 
ClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
... 
... 
 
serveraddr.sin_family = AF_INET; 
serveraddr.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx"); 
serveraddr.sin_port = htons(12345); 
 
if (connect(ClientSocket, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) == SOCKET_ERROR) 
{ 
    WSACleanup(); 
    return 1; 
} 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.