ACCEPT
Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Å´º¾ó (2)
Updated: 1999³â 6¿ù 7ÀÏ
Index
Return to Main Contents
À̸§
accept - ¼ÒÄÏ¿¡ ¿¬°áÀ» ¹Þ¾ÆµéÀδÙ.
»ç¿ë¹ý
#include <sys/types.h>
#include <sys/socket.h>
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
¼³¸í
accept
ÇÔ¼ö´Â ¿¬°á-±â¹Ý ¼ÒÄÏ Å¸ÀÔ¿¡
(SOCK_STREAM,
SOCK_SEQPACKET
±×¸®°í
SOCK_RDM)
»ç¿ëµÈ´Ù.
ÀÌ°ÍÀº ¹Ì°áÀÎ ¿¬°áµéÀ» À§ÇÑ Å¥¿¡¼ óÀ½ ¿¬°áÀ» »Ì¾Æ
s¿Í
°ÅÀÇ °°Àº Ư¼ºÀ» °®´Â »õ·Î ¿¬°áµÈ ¼ÒÄÏÀ» ¸¸µç´Ù. ±×¸®°í
¼ÒÄÏ¿¡ »õ ÆÄÀÏ ±â¼úÀÚ¸¦ ÇÒ´çÇϸç ÀÌ°ÍÀ» ¹ÝȯÇÑ´Ù.
»õ·Î »ý¼ºµÈ ¼ÒÄÏÀº ´õÀÌ»ó ±â´Ù¸®´Â(listen) »óÅ°¡ ¾Æ´Ï´Ù.
¿ø·¡ÀÇ ¼ÒÄÏ
s
´Â ÀÌ ½Ã½ºÅÛ ÄÝ¿¡ ÀÇÇØ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù.
ÆÄÀÏ ±â¼úÀÚ ÇÁ·¡±×Áß ¾î¶² °ÍÀº (ºñ-ºÀ¼â³ª async »óÅ°°ÀÌ
F_SETFL
fcntlÀ» °¡Áö°í ¼³Á¤ÇÒ¼ö ÀÖ´Â ¸ðµç °Í)
accept
¸¦ ÅëÇØ »ó¼ÓµÇÁö ¾Ê´Â´Ù.
ÀÎÀÚ
s
´Â
socket(2)À¸·Î
¸¸µé¾îÁø ¼ÒÄÏÀ̸ç,
bind(2)·Î
·ÎÄà ÁÖ¼Ò¸¦ ¹°í
listen(2)ÈÄ¿¡
¿¬°áÀ» ±â´Ù¸°´Ù.
ÀÎÀÚ
addr
´Â sockaddr ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù. ÀÌ ±¸Á¶Ã¼´Â Åë½Å Ãþ(communication layer)
À¸·Î ¾Ë·ÁÁø Á¢¼Ó ½ÇüÀÇ ÁÖ¼Ò°¡ ä¿öÁø´Ù.
addr
ÀÎÀÚ¿¡°Ô Àü´ÞµÇ´Â ÁÖ¼ÒÀÇ Á¤È®ÇÑ Çü½ÄÀº socket °¡Á·(
socket(2)°ú
ÇÁ·ÎÅäÄÝ ¸Ç ÆäÀÌÁö¸¦ ÂüÁ¶Çضó.)
¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.
addrlen
ÀÎÀÚ´Â °ª-°á°ú ÆĶó¹ÌÅÍÀÌ´Ù: ±×°ÍÀº
addr°¡
°¡¸®Å°´Â ±¸Á¶Ã¼ÀÇ Å©±â¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù.;¸®ÅϽà ±×°ÍÀº ¹ÝȯµÈ ÁÖ¼ÒÀÇ ½ÇÁ¦
±æÀÌ(¹ÙÀÌÆ®)¸¦ Æ÷ÇÔÇÑ´Ù.
addr
°¡ NULLÀ̶ó¸é ¾î¶²°Íµµ ä¿öÁöÁö ¾Ê´Â´Ù.
¸¸ÀÏ ¹Ì°áÀÎ ¿¬°áµéÀÌ Å¥¿¡ Á¸ÀçÇÑ´Ù¸é ±×¸®°í ¼ÒÄÏÀÌ ºñ-ºÀ¼â·Î½á Ç¥½ÃµÇÁö
¾Ê¾Ò´Ù¸é,
accept
´Â ¿¬°áÀÌ Á¸ÀçÇÒ¶§±îÁö È£ÃâÀÚ¸¦ ºÀ¼âÇÑ´Ù.
¸¸ÀÏ ¼ÒÄÏÀÌ ºñ-ºÀ¼âÀÌ°í ¹Ì°áÀÎ ¿¬°áµéÀÌ Å¥¿¡ Á¸ÀçÇÑ´Ù¸é,
accept
´Â EAGAINÀ» ¹ÝȯÇÑ´Ù.
¼ÒÄÏ¿¡ µé¾î¿À´Â ¿¬°áµéÀ» ÀνÄÇϱâ À§ÇØ, ¿©·¯ºÐÀº
select(2)³ª
poll(2)À»
»ç¿ëÇÒ¼ö ÀÖ´Ù.
»õ·Î¿î ¿¬°áÀÌ ½ÃµµµÇ¾úÀ»¶§ Àб⠰¡´ÉÇÑ À̺¥Æ®°¡ Àü´ÞµÇ¸ç ¿©·¯ºÐÀº ±× ¿¬°áÀ»
À§ÇÑ ¼ÒÄÏÀ» °¡Áö±â À§ÇØ
accept
¸¦ È£ÃâÇÑ´Ù.
¼±ÅÃÀûÀ¸·Î, ¿©·¯ºÐÀº È°µ¿ÀÌ ¼ÒÄÏ¿¡¼ ÀϾÀ»¶§
SIGIO
¸¦ Àü´ÞÇϱâ À§ÇØ ¼ÒÄÏÀ» ¼³Á¤ÇÒ¼ö ÀÖ´Ù.; ¼¼ºÎ»çÇ×À» À§Çؼ´Â
socket(7)¸¦
ÂüÁ¶Çضó.
DECNet °°ÀÌ ¸íÄèÇÑ ½ÂÀÎÀ» ¿ä±¸ÇÏ´Â ÇÁ·ÎÅäÄÝ¿¡¼,
accept
´Â ´ÜÁö ´ÙÀ½ ¿¬°á ¿ä±¸¸¦ Å¥¿¡¼ »©³»°í ½ÂÀÎÀ» À̾߱âÇÏÁö´Â ¾Ê´Â°ÍÀ¸·Î½á
»ý°¢µÉ¼ö ÀÖ´Ù.
È®ÀÎÀº »õ ÆÄÀÏ ±â¼úÀÚ¿¡ Á¤»óÀûÀÎ Àб⳪ ¾²±â¿¡ ÀÇÇØ ¾Ë¼ö ÀÖÀ¸¸ç
°ÅÀýÀº »õ ¼ÒÄÏÀ» ´ÝÀ½À¸·Î½á ¾Ë¼ö ÀÖ´Ù.
ÇöÀç ´ÜÁö DECNet¸¸ÀÌ ¸®´ª½º¿¡¼ ÀÌ·¯ÇÑ Àǹ̷ÐÀ» °¡Áø´Ù.
ÁÖÀÇ
SIGIO
°¡ Àü´ÞµÈ Èijª ¶Ç´Â
select(2)³ª
poll(2)°¡
Àб⠰¡´ÉÇÏ´Ù´Â À̺¥Æ®¸¦ ¹ÝȯÇÑÈÄ Ç×»ó ¿¬°áÀ» ±â´Ù¸®´Â °ÍÀº ¾Æ´Ï´Ù.
¿Ö³ÄÇϸé
accept
°¡ È£ÃâµÈ ÈÄ¿¡ ¿¬°áÀÌ ºñµ¿±âÀûÀÎ ³×Æ®¿÷ ¿¡·¯³ª ´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ Á¦°ÅµÉ¼öµµ
Àֱ⠶§¹®ÀÌ´Ù. ÀÌ·±ÀÏÀÌ ¹ß»ýÇÑ´Ù¸é È£ÃâÀº µµÂøÇÏ´Â ´ÙÀ½ ¿¬°áÀ» ±â´Ù¸®¸ç ºÀ¼â°¡
µÉ °ÍÀÌ´Ù.
accept
°¡ °áÄÚ ºÀ¼âµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» º¸ÀåÇϱâ À§ÇØ, Àü´ÞµÈ ¼ÒÄÏ
s
´Â
O_NONBLOCK
Ç÷¡±× ¼³Á¤À» °¡Á®¾ß ÇÑ´Ù.(
socket(7)¸¦
ÂüÁ¶Çضó.)
¹Ýȯ°ª
¿¡·¯½Ã -1ÀÌ ¹ÝȯµÈ´Ù. ¸¸ÀÏ ¼º°øÇÑ´Ù¸é, ¹Þ¾ÆµéÀÎ ¼ÒÄÏÀ» À§ÇÑ ±â¼úÀÚÀÎ
À½ÀÌ ¾Æ´Ñ Á¤¼ö¸¦ ¹ÝȯÇÑ´Ù.
¿¡·¯ HANDLING
Linux
accept
´Â
acceptÀÇ
¿¡·¯ Äڵ嶧¹®¿¡ »õ ¼ÒÄÏ¿¡ ÀÌ¹Ì ¹Ì°áÀÎ ³×Æ®¿÷ ¿¡·¯¸¦ Àü´ÞÇÑ´Ù.
ÀÌ·¯ÇÑ ÇൿÀº BSD ¼ÒÄÏ ¼öÇà°ú´Â ´Ù¸£´Ù. ½Å·ÚÀûÀÎ ÀÛµ¿À» À§ÇØ ÀÀ¿ë ÇÁ·Î±×·¥Àº
accept
ÈÄ¿¡ ÇÁ·ÎÅäÄÝ¿¡ Á¤ÀÇµÈ ³×Æ®¿÷ ¿¡·¯µéÀ» °Ë»çÇØ¾ß ÇÑ´Ù. ±×¸®°í Àç½Ãµµ¿¡ ÀÇÇØ
EAGAIN°°Àº
¿¡·¯¸¦ ó¸®ÇØ¾ß ÇÑ´Ù.
TCP/IPÀÇ °æ¿ì, À̰͵éÀº
ENETDOWN,
EPROTO,
ENOPROTOOPT,
EHOSTDOWN,
ENONET,
EHOSTUNREACH,
EOPNOTSUPP,
±×¸®°í
ENETUNREACH
ÀÌ´Ù.
¿¡·¯
- EAGAIN or EWOULDBLOCK
-
¼ÒÄÏÀÌ ºñ-ºÀ¼â·Î Ç¥½ÃµÇ¾ú°í ¾î¶² ¿¬°áµµ ¹Þ¾ÆµéÀ̱â À§ÇØ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
- EBADF
-
±â¼úÀÚ°¡ À¯È¿ÇÏÁö ¾Ê´Ù.
- ENOTSOCK
-
±â¼úÀÚ´Â ¼ÒÄÏÀÌ ¾Æ´Ï¶ó ÆÄÀÏÀ» °¡¸®Å²´Ù.
- EOPNOTSUPP
-
°¡¸®Å°´Â ¼ÒÄÏÀÌ
SOCK_STREAMŸÀÔÀÌ
¾Æ´Ï´Ù.
- EFAULT
-
addr
ÆĶó¹ÌÅÍ°¡ À¯Àú ÁÖ¼Ò °ø°£ÀÇ ¾²±â °¡´ÉÇÑ ºÎºÐÀÌ ¾Æ´Ï´Ù.
- EPERM
-
¹æȺ® ±ÔÄ¢ÀÌ ¿¬°áÀ» ¸·´Â´Ù.
- ENOBUFS, ENOMEM
-
¿©À¯ ¸Þ¸ð¸®°¡ ÃæºÐÇÏÁö ¾Ê´Ù. ÀÌ°ÍÀº ¸Þ¸ð¸® ÇÒ´çÀÌ ½Ã½ºÅÛ ¸Þ¸ð¸®¿¡ ÀÇÇؼ°¡
¾Æ´Ï¶ó ¼ÒÄÏ ¹öÆÛ Á¦ÇÑ°ª¿¡ ÀÇÇØ Á¦ÇѵǾú´Ù´Â °ÍÀ» ÀǹÌÇϸç 100%ÀÏÄ¡ÇÏÁö´Â
¾Ê´Â´Ù.
°Ô´Ù°¡, »õ ¼ÒÄÏ°ú ÇÁ·ÎÅäÄÝÀ» À§ÇØ Á¤ÀÇµÈ ³×Æ®¿÷ ¿¡·¯µéÀÌ ¹ÝȯµÈ´Ù. ´Ù¾çÇÑ
¸®´ª½º Ä¿³ÎÀº
EMFILE,
EINVAL,
ENOSR,
ENOBUFS,
EPERM,
ECONNABORTED,
ESOCKTNOSUPPORT,
EPROTONOSUPPORT,
ETIMEDOUT,
ERESTARTSYS
°°Àº ´Ù¸¥ ¿¡·¯µéÀ» ¹ÝȯÇÒ¼ö ÀÖ´Ù.
ȣȯ
SVr4, 4.4BSD (
accept
ÇÔ¼ö´Â BSD 4.2¿¡¼ óÀ½ ³ªÅ¸³µ´Ù.)
BSD ¸Ç ÆäÀÌÁö´Â ´Ù¼¸°³
(EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT)ÀÇ ¹Ýȯ °¡´ÉÇÑ ¿¡·¯µéÀ»
¹®¼È Çß´Ù.
SUSv2 ´Â EAGAIN, EBADF, ECONNABORTED, EFAULT, EINTR,
EINVAL, EMFILE, ENFILE, ENOBUFS, ENOMEM, ENOSR, ENOTSOCK, EOPNOTSUPP,
EPROTO, EWOULDBLOCK ¿¡·¯µéÀ» ¹®¼È Çß´Ù.
ÁÖÀÇ
accept
ÀÇ ¼¼¹ø° ÀÎÀÚ´Â ¿ø·¡ `int *`(±×¸®°í libc4 ±×¸®°í libc5 ±×¸®°í BSD 4.*, SunOS 4, SGI °°Àº ¸¹Àº ´Ù¸¥ ½Ã½ºÅÛ¿¡¼)·Î ¼±¾ðµÇ¾ú´Ù.; POSIX 1003.1g Ç¥ÁØ ÃʾÈÀº ÀÌ
ŸÀÔÀ» `size_t *`À¸·Î ±×¸®°í SunOS 5¿¡¼ ÀÌ·¸°Ô ¹Ù²Ù±æ ¿øÇß´Ù.
POSIX ÃʾÈÀÌ `socklen_t *`ÀÌ µÈÈÄ Single Unix Specification°ú glibc2´Â ÀÌ·¸°Ô
ÇÏ¿´´Ù. ¸®´©½º Åä¹ßÁîÀÇ ¸»À» ÀοëÇϸé:
_Any_ sane library _must_ have "socklen_t" be the same size
as int.
±×¹ÛÀÇ °ÍµéÀº BSD ¼ÒÄÏ ÃþÀ» ¸·´Â´Ù. POSIX´Â _did_¸¦ size_t·Î ¸¸µé¾úÀ¸¸ç
³ª´Â(±×¸®°í ³Ê¹« ¸¹Áö´Â ¾ÊÁö¸¸ ´Ù¸¥ »ç¶÷µé) ½ÇÁ¦·Î ¸Å¿ì ºÒ¸¸Á·½º·´´Ù.
size_t´Â ¸Å¿ì ¹®Á¦°¡ ÀÖ´Ù. ¿Ö³ÄÇϸé size_t´Â 64-ºñÆ® ¾ÆÅ°ÅØÃÄ¿¡¼ "int"ó·³
°ÅÀÇ °°Àº Å©±â°¡ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù.
±×¸®°í ±×°ÍÀº "int"ó·³ °°Àº Å©±â¸¦ °¡Á®¾ß ÇÑ´Ù. ¿Ö³ÄÇϸé BSD ¼ÒÄÏ ÀÎÅÍÆäÀ̽º°¡
±×·¸±â ¶§¹®ÀÌ´Ù.
¾î¶µç, POSIX »ç¶÷µéÀº °á±¹ °è±â¸¦ °¡Áö°í "socklen_t"¸¦ ¸¸µé¾ú´Ù.
±×µéÀº óÀ½ À§Ä¡¿¡¼´Â °ÇµéÁö´Â ¾Ê¾ÒÁö¸¸ ÀÏ´Ü ±×µéÀº °íÃÆ°í ±×°ÍÀÌ ¸î¸î
ÀÌÇØÇÒ¼ö ¾ø´Â ÀÌÀ¯¶§¹®¿¡ ŸÀÔÀ̶ó´Â À̸§À» °¡Á®¾ß ÇÑ´Ù´Â °ÍÀ» ´À²¼´Ù.
(¾Æ¸¶ ´©±º°¡´Â ¿ø·¡ ¾î¸®¼®Àº ÀÏÀ» ÇÏ´Â °Í ÀÌ»óÀ¸·Î ¾ó±¼ Æȸ®´Â°ÍÀ» ÁÁ¾ÆÇÏÁö
¾Ê´Â´Ù. ±×¸®¼ ±×µéÀº Á¶¿ëÈ÷ ±×µéÀÇ ½Ç¼ö¸¦ ´Ù½Ã À̸§ Áö¾ú´Ù.)
°ü·Ã Ç׸ñ
bind(2),
connect(2),
listen(2),
select(2),
socket(2)
¿ªÀÚ
Á¤°ÈÆ <skyeyes@soback.kornet.net>, 2000³â 9¿ù 19ÀÏ
Index
- À̸§
-
- »ç¿ë¹ý
-
- ¼³¸í
-
- ÁÖÀÇ
-
- ¹Ýȯ°ª
-
- ¿¡·¯ HANDLING
-
- ¿¡·¯
-
- ȣȯ
-
- ÁÖÀÇ
-
- °ü·Ã Ç׸ñ
-
- ¿ªÀÚ
-
This document was created by
man2html,
using the manual pages.
Time: 08:06:59 GMT, March 25, 2004