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 ¿¡¼ÀÇ ±¸Çö...
IrSocket Ŭ¶óÀÌ¾ðÆ®´Â connect ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ bind ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. ¸¸¾à ¼ºñ½º À̸§ÀÌ "LSAP-SELxxx"ÇüÅÂ(xxx´Â 0~255»çÀÌÀÇ ½ÊÁø Á¤¼ö) ¶ó¸é, ÁÖ¼Ò´Â ¼ºñ½º À̸§ º¸´Ù ƯÁ¤ÇÑ LSAP-SEL xxx¸¦ ÀǹÌÇÕ´Ï´Ù. LSAP-SELxxx ¼ºñ½º À̸§Àº IAS¸¦ ¹ß»ýÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ¼ÒÄÏÀº ƯÁ¤ÇÑ IAS¸¦ ¹«½ÃÇÑ LSAP-SELÀ» Á÷Á¢ÀûÀ¸·Î ¹À»°ÍÀÔ´Ï´Ù.
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
overview, connect, getsockname, listen, setsockopt, socket, WSACancelBlockingCall