bind

bind ÇÔ¼ö´Â ·ÎÄà ÀÎÅÍÆäÀ̽º ¾îµå·¹½º¿Í Æ÷Æ®¹øÈ£¸¦ ¼ÒÄÏ°ú ¼­·Î ¿¬°üµÇ°Ô ¹­´Â ÇÔ¼öÀÔ´Ï´Ù.

int bind (
    SOCKET
s,
    const struct sockaddr FAR*
name,
    int
namelen
);

 

Parameters

s
[ÀÔ·Â] ·ÎÄþîµå·¹½º¿Í ¾ÆÁ÷ ¹­¿©ÁöÁö ¾ÊÀº ¼ÒÄÏ ±â¼úÀÚ(descriptor).

name
[ÀÔ·Â] ¼ÒÄÏ¿¡ ÇÒ´çÇϱâÀ§ÇÑ
SOCKADDR ±¸Á¶Ã¼·Î ÀÌ·ç¾îÁø ÁÖ¼Ò.

namelen
[ÀÔ·Â]
name ¸Å°³º¯¼öÀÇ Å©±â (ÀϹÝÀûÀ¸·Î sizeof(SOCKADDR) ¿ä·ÎÄÉ ¾²ÀÔ´Ï´Ù).

Remarks

óÀ½ ¸¸µé¾î Áú ¶§ ¼ÒÄÏÀº ±×¿Í °ü·ÃµÈ ·ÎÄà ¾îµå·¹½º¸¦ °¡ÁöÁö ¾Ê½À´Ï´Ù. µû¶ó¼­ bind ÇÔ¼ö´Â connect ³ª listen ÇÔ¼ö¸¦ µÚÀ̾î È£ÃâÇϱâ Àü¿¡, Á¢¼ÓµÇÁö ¾ÊÀº ¼ÒÄÏ¿¡ »ç¿ëµË´Ï´Ù. ÀÌ ÇÔ¼ö´Â Á¢¼ÓÁöÇâÇü¼ÒÄÏ(stream socket : TCP)À̳ª ºñÁ¢¼Ó(datagram : UDP) ¼ÒÄÏ À̳ª ¸ðµÎ »ç¿ëÇÕ´Ï´Ù. ¼ÒÄÏÀÌ socket ÇÔ¼ö¸¦ È£ÃâÇؼ­ »ý¼ºµÉ ¶§, ¼ÒÄÏÀº À̸§°ø°£(name space)¿¡ Á¸ÀçÇÕ´Ï´Ù. ÇÏÁö¸¸, ÇÒ´çµÈ À̸§À» °¡ÁöÁö´Â ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, À̸§ Áö¿©ÁöÁö ¾ÊÀº ¼ÒÄÏ°ú ·ÎÄà ¾îµå·¹½º¸¦ ¿¬°áÁö¿ì±â À§Çؼ­ ÀÌ ÇÔ¼ö´Â »ç¿ëµË´Ï´Ù.

ÀÌ ÇÔ¼ö¿¡ ÀÇÇؼ­ ÇÒ´çµÇ¾î Áö´Â À̸§Àº ¼¼°¡Áö ºÎºÐÀ¸·Î ±¸¼ºµË´Ï´Ù. (ÀÎÅÍ³Ý ÁÖ¼Ò Ã¼°è¸¦ »ç¿ëÇÒ ¶§ : ÁÖ¼Òü°è(address family), È£½ºÆ®ÁÖ¼Ò(host address), ¾îÇø®ÄÉÀ̼ǿ¡ »ç¿ëµÇ´Â Æ÷Æ®¹øÈ£(port number)) WinSock2 ¿¡¼­´Â name ¸Å°³º¯¼ö´Â SOCKADDR ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ·Î ¹Ýµå½Ã ³Ñ°Ü¾ß ÇÑ´Ù¶ó´Â ±×·± ±ÔÁ¤Àº ¾ø½À´Ï´Ù. ±×Àú À©µµ¿ìÁî ¼ÒÄÏ 1.1 °úÀÇ È£È¯¼º ¶§¹®¿¡ ³²¾Ò´Â »ê¹°Á¤µµ¶ó°í »ý°¢ÇØ µÎ¼¼¿ä. ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ´Â namelen ÀÇ ¸Þ¸ð¸® »çÀÌÁî ºí·Ï Æ÷ÀÎÅÍ¿¡ ´ëÇØ ¿¬°üÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ¸Þ¸ð¸® ºí·Ï¿¡¼­ ù¹ø° 2Byte (SOCKADDR ±¸Á¶Ã¼ÀÇ sa_family¿¡ ÇØ´çµÇ´Â ºÎºÐÀÔ´Ï´Ù) ´Â ¼ÒÄÏÀ» »ý¼ºÇϴµ¥ »ç¿ëµÇ´Â ¾îµå·¹½º ü°è(address family)¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾Ê´Ù¸é, WSAEFAULT ¿¡·¯°¡ ¹ß»ý ÇÒ °ÍÀÔ´Ï´Ù.

¸¸¾à ¾îÇø®ÄÉÀ̼ÇÀÌ ¾î¶² ·ÎÄà ¾îµå·¹½º¸¦ ÇÒ´ç ÇÒ °ÍÀÎÁö °í·ÁÇÏÁö ¾Ê°í »ç¿ëµÈ´Ù¸é, name ¸Å°³º¯¼öÀÇ sa_data ¸â¹ö¸¦ À§ÇØ INADDR_ANY ¶ó´Â »ó¼ö°ªÀ» ¸í½ÃÇØ¾ß ÇÕ´Ï´Ù. ÀÌ »ó¼ö°ªÀ» »ç¿ëÇϸé, ÀûÀýÇÑ ³×Æ®¿÷ ÁÖ¼Ò¸¦ »ç¿ëÇϱâ À§ÇØ ±âº»À̵Ǵ ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ¸¦ Àû¿ëÇÏ°Ô µË´Ï´Ù. ÀÌ »ó¼ö°ªÀº ÇÑ °³ ÀÌ»óÀÇ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º³ª ÁÖ¼Ò°¡ Àִ ȣ½ºÆ®ÀÏ °æ¿ì ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¹ÖÀ» °£·«È÷ Çϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº ÀÎÅÍÆäÀ̽º ¾îµå·¹½º¿¡ ´ëÇØ INADDR_ANY¸¦ »ç¿ëÇÕ´Ï´Ù.

TCP/IP¿¡¼­ Æ÷Æ®¹øÈ£°¡ 0À¸·Î ¸í½ÃµÈ °æ¿ì¿¡´Â ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇÑ °íÀ¯ÇÑ Æ÷Æ®¹øÈ£(1024~5000 »çÀÌÀÇ °ª)¸¦ ÇÒ´çÇÕ´Ï´Ù.  ¾îÇø®ÄÉÀ̼ÇÀº ÁÖ¼Ò¿Í Æ÷Æ®¸¦ ¾Ë±âÀ§ÇØ bind µÈ ÈÄ¿¡ getsockname ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ÀÎÅÍ³Ý ÁÖ¼Ò°¡ INADDR_ANY ·Î »ç¿ëµÇ¾î ÀÖ´Ù¸é, getsockname ÇÔ¼ö´Â Á¢¼ÓµÇ±â Àü±îÁö´Â »ç¿ëÇÏÁö ¸øÇÕ´Ï´Ù. (¸î¸î ÁÖ¼ÒµéÀº È£½ºÆ®°¡ multihome ÀÏ °æ¿ì ¿Ã¹Ù¸¦ ¼öµµ Àֱ⠶§¹®ÀÔ´Ï´Ù) 0¹ø Æ÷Æ®°¡ ¾Æ´Ñ ƯÁ¤ÇÑ Æ÷Æ® ¹øÈ£¸¦ ¹ÙÀεùÇÏ´Â °ÍÀº Ŭ¶óÀ̾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀ» ¹«¿ëÁö¹°ÀÌ µÇ°Ô ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé, ´Ù¸¥ ¼ÒÄÏ¿¡ ÀÌ¹Ì ±× Æ÷Æ® ¹øÈ£¸¦ »ç¿ëÇÏ°í ÀÖÀ» °æ¿ì Ãæµ¹ ÇÒ ¼ö ÀÖ´Â À§ÇèÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. µû¶ó¼­, Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ÀÌ Æ÷Æ® 0À» ÁöÁ¤ÇÏ´Â ¹Ý¸é, ¼­¹ö ÇÁ·Î±×·¥Àº ´ë°³ ÀÚ½ÅÀÇ Æ÷Æ® ¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

connect  ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡´Â bind ÇÔ¼ö¿Í °°ÀÌ ¼ÒÄÏ°ú ¾îµå·¹½º¸¦ ¹­´Â ÇÔ¼ö°¡ »ç½Ç»ó ÇÊ¿äÄ¡ ¾Ê½À´Ï´Ù. ¼ÒÄÏÀÌ ¹­À̱â Àü¿¡ connect ÇÔ¼ö°¡ È£ÃâµÉ °æ¿ì bind ÇÔ¼ö°¡ INADDR_ANY ÀÇ ¾îµå·¹½º¿Í Æ÷Æ® ¹øÈ£ 0À» ÀÌ¿ëÇÏ¿© ¼ÒÄÏ¿¡ ´ëÇØ È£ÃâµÈ °Íó·³ ¼ÒÄÏÀº ÀÚµ¿À¸·Î ¹­ÀÌ°Ô µË´Ï´Ù. ´ëºÎºÐÀÇ Å¬¶óÀ̾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀº ·ÎÄà ÀÎÅÍÆäÀ̽º ¾îµå·¹½º³ª Ưº°ÇÑ Æ÷Æ® °ªÀ» ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. µû¶ó¼­ bindÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ connect ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ÀÌµé ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ ´Ü°è¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î ¼­¹ö ¾îÇø®ÄÉÀ̼ÇÀº Well-known Æ÷Æ®¿Í ¹­ÀÎ ¼ÒÄÏÀ» »ý¼ºÇØ¾ß ÇÕ´Ï´Ù. À̸¦ À§ÇØ bind ÇÔ¼ö´Â ´ëºÎºÐ ¼­¹ö¿¡ ´ëÇØ ¸íÈ®ÇÏ°Ô È£ÃâµÇ¾î¾ß ÇÕ´Ï´Ù.

Windows CE : IrSocket ¿¡¼­ÀÇ ±¸Çö...

Return Values

¿¡·¯°¡ ¾ø´Â °æ¿ì 0À» ¸®ÅÏÇÕ´Ï´Ù. ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì´Â SOCKET_ERRORÀ» ¸®ÅÏÇÕ´Ï´Ù. ±×¸®°í, WSAGetLastError ÇÔ¼ö¸¦ È£ÃâÇؼ­ ƯÁ¤ÇÑ ¿¡·¯Äڵ带 ¸®ÅÏ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Error Codes

WSANOTINITIALISED

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ¼º°øÀûÀÎ WSAStartup ÇÔ¼öÀÇ È£ÃâÀÌ ¾ø¾ú½À´Ï´Ù.

WSAENETDOWN

³×Æ®¿÷ ¼­ºê ½Ã½ºÅÛ¿¡ ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.

WSAEADDRINUSE
 
 
ÇÁ·Î¼¼½º°¡ ÀÌ¹Ì °°Àº ¾îµå·¹½º·Î ¹Ù¿îµå µÇ¾îÀÖ°í, ¼ÒÄÏÀÌ SO_REUSEADDR·Î Àç »ç¿ë ¾îµå·¹½º¶ó´Â Ç׸ñÀ» ¸¶Å© ÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ÇÑ ¿¹·Î, IP ÁÖ¼Ò¿Í Æ÷Æ®°¡ af_inet °æ¿ì·Î ¹Ù¿îµå µÇ¾îÀÖ´Â °æ¿ìÀÔ´Ï´Ù. (setsockopt ÇÔ¼ö¿¡ ÀÇÇÑ SO_REUSEADDR ¼ÒÄÏ ¿É¼Ç¿¡ ´ëÇؼ­ Âü°íÇϼ¼¿ä)
WSAEADDRNOTAVAIL ÁöÁ¤µÈ ÁÖ¼Ò°¡ Á¤È®ÇÑ ÁÖ¼Ò°¡ ¾Æ´Õ´Ï´Ù.
WSAEFAULT
 
 
nameÀ̳ª namelen ¸Å°³º¯¼ö°¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù. namelen ¸Å°³º¯¼ö°¡ ³Ê¹« À۰ųª, name ¸Å°³º¯¼ö°¡ ¿¬°üµÈ ÁÖ¼Òü°è¿¡ ´ëÇؼ­ À߸øµÈ ÁÖ¼Ò ÇüŸ¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. ¶Ç´Â, ¸Þ¸ð¸® ºí·ÏÀÇ Ã¹ ¹ø° 2Byte °¡ ¼ÒÄÏ ±â¼úÀÚ s¿Í ¿¬°üµÈ ÁÖ¼Òü°è¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.
WSAEINPROGRESS

ºí·°Å· À©¼Ó v1.1 ÀÌ ÇöÀç ÁøÇà ÁßÀ̰ųª, ¼­ºñ½º ÇÁ·Î¹ÙÀÌ´õ°¡ Äݹé ÇÔ¼ö¸¦ ¿©ÀüÈ÷ ó¸®ÇÏ°í ÀÖ½À´Ï´Ù.

WSAEINVAL ¼ÒÄÏÀÌ ÀÌ¹Ì Æ¯Á¤ÁÖ¼Ò¿Í ¹ÙÀÎµå µÇ¾î ÀÖ½À´Ï´Ù.
WSAENOBUFS ³Ê¹« ¸¹Àº Á¢¼ÓÀ¸·Î ÀÎÇÏ¿© ¹öÆÛ°¡ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù.
WSAENOTSOCK ±â¼úÀÚ(descriptor)°¡ ¼ÒÄÏ ±â¼úÀÚ°¡ ¾Æ´Õ´Ï´Ù.

QuickInfo

Windows NT : »ç¿ë°¡´É
Windows : »ç¿ë°¡´É
Windows CE : ¹öÁ¯ 1.0 ±×¸®°í ±×ÀÌÈÄÀÇ ¹öÁ¯¿¡¼­ »ç¿ë°¡´É
Header :
          Win16/32 : winsock.h
          Win32-II : winsock2.h
Import Library :
          Win16 : winsock.lib
          Win32 : wsock32.lib
          Win32-II : ws2_32.lib

See Also

overview, connect, getsockname, listen, setsockopt, socket, WSACancelBlockingCall