BOOL SetSockOpt ( int nOptionName, const void * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );
¹Ýȯ °ª
ÀÌ ÇÔ¼ö´Â ¼º°ø ÇÏ´Â °æ¿ì 0ÀÌ ¾Æ´Ñ ±×·¸Áö ¾ÊÀ¸¸é 0, ±×¸®°í ƯÁ¤ ¿À·ù Äڵ带 »ç¿ë ÇÏ´Â GetLastError¸¦ È£Ãâ ÇÏ ¿© °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸â¹ö ÇÔ¼ö¿¡ ´ÙÀ½°ú °°Àº ¿À·ù°¡ Àû¿ë:
¸Å°³ º¯¼ö
nOptionName
¼ÒÄÏ ¿É¼Ç ¼³Á¤ °ªÀº¡£
lpOptionValue
¿äûÇÑ ¿É¼Ç¿¡ ´ë ÇÑ °ªÀ» Á¦°ø ÇÏ´Â ¹öÆÛ¿¡ ´ë ÇÑ Æ÷ÀÎÅÍ¡£
nOptionLen
¹ÙÀÌÆ®¿¡¼ lpOptionValue ¹öÆÛÀÇ Å©±â¡£
nLevel
¼öÁØ ÀÖ´Â ¿É¼ÇÀÌ Á¤ÀÇ µË´Ï´Ù; À¯ÀÏÇÑ Áö¿øµÈ ·¹º§Àº SOL_SOCKET ¹× IPPROTO_TCP¡£
ÁÖÀÇ
¼ÒÄÏ ¿É¼ÇÀ» ¼³Á¤ ÇÏ·Á¸éÀÌ ¸â¹ö ÇÔ¼ö¸¦ È£Ãâ ÇÕ´Ï´Ù. SetSockOpt ¾î¶² »óÅ¿¡¼ ¾î¶² Á¾·ùÀÇ socket°ú °ü·Ã µÈ ¼ÒÄÏ ¿É¼Ç¿¡ ´ë ÇÑ ÇöÀç °ªÀ» ¼³Á¤ ÇÕ´Ï´Ù. ¿É¼ÇÀº ¿©·¯ °³ÀÇ ÇÁ·ÎÅäÄÝ ¼öÁØ¿¡¼ Á¸ÀçÇÒ ¼ö, ºñ·ÏÀÌ »ç¾ç¸¸ ÃÖ°í "¼ÒÄÏ" ¼öÁØ¿¡¼ Á¸Àç ÇÏ´Â ¿É¼ÇÀ» Á¤ÀÇ ÇÕ´Ï´Ù. ¿É¼Ç¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¿©ºÎ ±ä±ÞµÈ µ¥ÀÌÅÍ ¼ö½Å ÀÏ¹Ý µ¥ÀÌÅÍ ½ºÆ®¸² ºê·Îµåij½ºÆ® ¸Þ½ÃÁö¸¦ ¼ÒÄÏ¿¡ º¸³»Áú ¼ö ÀÖ´Ù ±âŸ µîµî ¿©ºÎ¿Í °°Àº ¼ÒÄÏ ÀÛ¾÷¡£
µÎ °¡Áö ¹æ¹ýÀ¸·ÎÀÇ socket ¿É¼Ç: ±â´ÉÀÌ ³ª µ¿ÀÛÀ» »ç¿ëÇÒÁö ¿©ºÎ¸¦ ÁöÁ¤ ÇÏ´Â ºÎ¿ï ¿É¼Ç ¹× Á¤¼ö °ª ¶Ç´Â ±¸Á¶¸¦ ÇÊ¿ä·Î ÇÏ´Â ¿É¼Ç. ºÎ¿ï ¿É¼ÇÀ» ¼³Á¤ ÇÏ·Á¸é lpOptionValue À» 0ÀÌ ¾Æ´Ñ Á¤¼ö·Î °¡¸®Åµ´Ï´Ù. ¿É¼Ç lpOptionValue Æ÷ÀÎÆ® 0 °°Àº Á¤¼ö¸¦ »ç¿ë ÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. nOptionLen ºÎ¿ï ¿É¼Ç¿¡ ´ë ÇÑ sizeof(BOOL) ¿Í °°¾Æ¾ß ÇÕ´Ï´Ù. ´Ù¸¥ ¿É¼Ç¿¡ ´ë ÇÑ lpOptionValue Æ÷ÀÎÆ® Á¤¼ö ¶Ç´Â ¿É¼Ç ¹× nOptionLen ¿¡ ´ë ÇÑ ¿øÇÏ´Â °ªÀÌ Æ÷ÇÔ µÈ ±¸Á¶Ã¼¸¦ Á¤¼ö ¶Ç´Â ±¸Á¶Ã¼ÀÇ ±æÀÌ¡£
SO_LINGER º¸³»Áö ¾ÊÀº µ¥ÀÌÅ͸¦ ¼ÒÄÏ¿¡ ´ë±â ÇÏ °í ¼ÒÄÏÀ» ´ÝÀ» ¼ö ´Ý±â ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ¼öÇà ÇÏ´Â ÀÛ¾÷À» Á¦¾î ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ÂüÁ¶ Win32 SDK ¼³¸í¼¿¡¼ Windows ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö °í·Á »çÇס£
±âº»ÀûÀ¸·Î ¼ÒÄÏ¿¡ ¹ÙÀεùÇÒ ¼ö ¾ø½À´Ï´Ù ( ¹ÙÀεùÂüÁ¶)°¡ ÀÌ¹Ì »ç¿ë ÇÏ´Â ·ÎÄà ÁÖ¼Ò. ±×·¯³ª ¶§¶§·Î,, ±×°ÍÀº ¼ö ÀÖ½À´Ï´Ù ""ÀÌ ¹æ¹ýÀ¸·Î ÁÖ¼Ò¸¦ Àç»ç¿ë ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÑ. ¸ðµç ¿¬°áÀÌ ·ÎÄà ¹× ¿ø°Ý ÁÖ¼ÒÀÇ Á¶ÇÕÀ¸·Î ½Äº° µË´Ï´Ù ÀÌÈÄ °Å±â¿¡ ¾Æ¹« ¹®Á¦ ¸¸Å ¿ø°Ý ÁÖ¼Ò ´Ù¸¥ µ¿ÀÏÇÑ ·ÎÄà ÁÖ¼Ò¿¡ ¹ÙÀεùµÈ µÎ °³ÀÇ ¼ÒÄÏÀ» °®´Â¡£
Windows ¼ÒÄÏ ±¸Çö¿¡ ¾Ë¸³´Ï´Ù ¿øÇÏ´Â ÁÖ¼Ò¸¦ ÀÌ¹Ì ´Ù¸¥ ¼ÒÄÏ¿¡ ÀÇÇØ »ç¿ë Áß À̹ǷΠ¼ÒÄÏ ¹ÙÀεù È£ÃâÀ» Çã¿ë ÇÏÁö ÇÑ´Ù, ÀÀ¿ë ÇÁ·Î±×·¥ ¹ÙÀεù È£ÃâÀ» ¹ß±Þ Çϱâ Àü¿¡ ¼ÒÄÏ SO_REUSEADDR ¼ÒÄÏ ¿É¼ÇÀ» ¼³Á¤ ÇØ¾ß ÇÕ´Ï´Ù. Âü°í ¿É¼ÇÀº ¹ÙÀεù È£ÃâÀÇ ½Ã°£¿¡¸¸ ÇØ¼® µË´Ï´Ù: ±×°ÍÀº µû¶ó¼ (ÇÏÁö¸¸ ¹«ÇØ) ÇÊ¿äÇÑ ±âÁ¸ ÁÖ¼Ò¿¡ ¹ÙÀεùµÈ °ÍÀº ¼ÒÄÏ ¿É¼ÇÀ» ¼³Á¤ ÇÏ °í ÀüÈ¿¡ À̰Ϳ¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù ¶Ç´Â ´Ù¸¥ ¼ÒÄÏÀ» ¼³Á¤ Çϰųª ¹ÙÀεù ÈÄ¿¡ ¿É¼ÇÀ» Àç¼³Á¤¡£
ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Windows ¼ÒÄÏ ±¸ÇöÀÌ SO_KEEPALIVE ¼ÒÄÏ ¿É¼ÇÀ» ¼³Á¤ ÇÏ ¿© "keep-alive" ÆÐŶ Àü¼Û Á¦¾î ÇÁ·ÎÅäÄÝ (TCP) ¿¬°á¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¿äûÇÒ ¼ö ÀÖ½À´Ï´Ù. ("Keep-alive" ÆÐŶ¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ÂüÁ¶ Win32 SDK ¼³¸í¼¿¡¼ Windows ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö °í·Á ÇÕ´Ï´Ù.) Windows ¼ÒÄÏ ±¸Çö¿¡ ¿¬°á À¯Áö¸¦ »ç¿ë ÇÏ ¿© Áö¿ø ÇÏÁö ÇÊ¿ä: ±×°Í ¾ÊÀ¸¸é Á¤È®ÇÑ Àǹ̴ ±¸Çö ÇÏÁö¸¸ RFC 1122 4.2.3.6 ÀýÀ» µû¶ó¾ß ÇÕ´Ï´Ù: "ÀÎÅÍ³Ý È£½ºÆ®¿¡ ´ë ÇÑ ¿ä±¸ »çÇ×-Åë½Å ·¹À̾î ÇÕ´Ï´Ù." °á°úÀûÀ¸·Î ¿¬°áÀÌ "keep-alive" ¿À·ù ÄÚµå WSAENETRESET ¹Ýȯ µË´Ï´Ù ÁøÇà ÁßÀÎ ¸ðµç È£ÃâÀ» ¼ÒÄÏ¿¡ °í WSAENOTCONN ¿Í ÇÔ²² ¸ðµç ÈÄ¼Ó È£Ãâ ½ÇÆÐ¡£
TCP_NODELAY ¿É¼Ç ¿ù¸® ¾Ë°í¸®ÁòÀ» ºñȰ¼ºÈÇÕ´Ï´Ù. ¿ù¸® ¾Ë°í¸®Áò Å« ÆÐŶÀ» º¸³¾ ¼ö ¶§±îÁö ½ÂÀÎ µÇÁö ¾ÊÀº º¸³»±â µ¥ÀÌÅ͸¦ ¹öÆÛ¸µ ÇÏ ¿© È£½ºÆ®¿¡¼ Àü¼Û ÇÏ´Â ÀÛÀº ÆÐŶ ¼ö¸¦ ÁÙÀ̱â À§ÇØ »ç¿ë µË´Ï´Ù. ±×·¯³ª, ÀϺΠÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑÀÌ ¾Ë°í¸®Áò ¼º´É, ¹æÇØ ¼ö ÀÖ½À´Ï´Ù ±×¸®°í TCP_NODELAY À» »ç¿ë ÇÏ ¿© ±×°ÍÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÊÀ¸¸é ÇÏ °í ¿µÇâ ±×·¸°Ô °³¹æÀûÀÌ °í ¿øÇÏ´Â TCP_NODELAY ¼³Á¤ ³×Æ®¿öÅ© ¼º´É¿¡ »ó´çÇÑ ºÎÁ¤ÀûÀÎ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖÀ¸¹Ç·Î ÀÀ¿ë ÇÁ·Î±×·¥ ÀÛ¼ºÀÚ TCP_NODELAY À» ¼³Á¤ ÇØ¾ß ÇÕ´Ï´Ù. TCP_NODELAY ´Â À¯ÀÏÇÑ ·¹º§ IPPROTO_TCP;À» »ç¿ë ÇÏ´Â ¼ÒÄÏ ¿É¼Ç Áö¿ø ´Ù¸¥ ¸ðµç ¿É¼Ç »ç¿ë ¼öÁØ SOL_SOCKET¡£
ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ SO_DEBUG ¿É¼ÇÀÌ ¼³Á¤ µÇ¾î ÀÖÀ¸¸é µð¹ö±× Á¤º¸¸¦ Ãâ·Â ÇÏ´Â Windows ¼ÒÄÏ °ø±ÞÀÇ ÀϺΠ±¸Çö¡£
SetSockOpt´ÙÀ½ ¿É¼ÇÀÌ Áö¿ø µË´Ï´Ù. LpOptionValue ¿¡ ÀÇÇØ ÇØ°á ÇÏ´Â µ¥ÀÌÅÍÀÇ Çü½ÄÀ» ½Äº° ÇÏ´Â Type¡£
| °ª | À¯Çü | ÀÇ¹Ì |
| SO_BROADCAST | BOOL | ¼ÒÄÏ¿¡ ºê·Îµåij½ºÆ® ¸Þ½ÃÁöÀÇ Àü¼ÛÀ» Çã¿ëÇÕ´Ï´Ù¡£ |
| SO_DEBUG | BOOL | µð¹ö±ë Á¤º¸ ±â·Ï¡£ |
| SO_DONTLINGER | BOOL | ´Ý±â º¸³»Áö ¾ÊÀº µ¥ÀÌÅÍ¿¡ ´ë ÇÑ ´ë±â¸¦ º¸³¾ ¼ö Â÷´Ü ÇÏÁö ¸¶½Ê½Ã¿À. ÀÌ ¿É¼ÇÀ» ¼³Á¤ ÇÏ´Â °ÍÀº l_onoff ¸¦ 0À¸·Î ¼³Á¤ µÈ SO_LINGER ¸¦ ¼³Á¤ ÇÏ´Â °Í°ú °°½À´Ï´Ù. |
| SO_DONTROUTE | BOOL | ¶ó¿ìÆÃ ÇÏÁö ¸¶½Ê½Ã¿À: ÀÎÅÍÆäÀ̽º¿¡ Á÷Á¢ º¸³»±â¡£ |
| SO_KEEPALIVE | BOOL | Keep-alive º¸³»±â¡£ |
| SO_LINGER | lINGER ±¸Á¶Ã¼ | º¸³»Áö ¾ÊÀº µ¥ÀÌÅͰ¡ ÀÖÀ¸¸é ´Ý±â ¿¡ ¸Ó¹«¸£°Ô¡£ |
| SO_OOBINLINE | BOOL | ÀÏ¹Ý µ¥ÀÌÅÍ ½ºÆ®¸²¿¡¼-¹êµå µ¥ÀÌÅÍ ¼ö½Å¡£ |
| SO_RCVBUF | int | ¹öÆÛ Å©±â¸¦ ¹Þ´Â ÁöÁ¤¡£ |
| SO_REUSEADDR | BOOL | »ç¿ë¿¡ ÀÌ¹Ì ÀÖ´Â ÁÖ¼Ò¿¡ ¹ÙÀεùµÈ ¼ÒÄÏÀ» Çã¿ë ÇÕ´Ï´Ù. ( ¹ÙÀεùÂüÁ¶.) |
| SO_SNDBUF | int | Àü¼Û ¹öÆÛ Å©±â ÁöÁ¤¡£ |
| TCP_NODELAY | BOOL | º¸³»±â º´ÇÕ¿¡ ´ë ÇÑ ¿ù¸® ¾Ë°í¸®ÁòÀ» »ç¿ë ÇÏÁö ¾Êµµ·Ï ¼³Á¤¡£ |
SetSockOpt Áö¿ø µÇÁö ¹öŬ¸® ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷ (BSD) ¿É¼Ç:
| °ª | À¯Çü | ÀÇ¹Ì |
| SO_ACCEPTCONN | BOOL | ¼ÒÄÏ ¼ö½Å |
| SO_ERROR | int | ¿À·ù »óÅÂ ¹× Ãë¼Ò¡£ |
| SO_RCVLOWAT | int | ÇÏÀ§ ¿öÅÍ ¸¶Å©¸¦ ¼ö½Å¡£ |
| SO_RCVTIMEO | int | ¼ö½Å ½Ã°£ Á¦ÇÑ |
| SO_SNDLOWAT | int | ÇÏÀ§ ¿öÅÍ ¸¶Å©¸¦ º¸³»±â¡£ |
| SO_SNDTIMEO | int | º¸³»±â ½Ã°£ Á¦ÇÑ¡£ |
| SO_TYPE | int | ¼ÒÄÏÀÇ Á¾·ù¡£ |
| IP_OPTIONS | IP Çì´õ¿¡ ¼³Á¤µÈ ¿É¼Ç Çʵ塣 |
CAsyncSocket °³¿ä |nbsp; Ŭ·¡½º ¸â¹ö (ko) | °èÃþ ±¸Á¶ Â÷Æ®(&N)
Âü°í Ç׸ñnbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl(&N)