listen : ¼ÒÄÏ ´ë±â¿­ »ý¼º
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>listen(2)



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

HTML º¯È¯¹®¼­

<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<chapter lang=ko> 
<!-- ÀÛ¼ºÀÚ : yundream             --> 
<!-- ÀÛ¼ºÀÏ : 2004/01/03           --> 
<!-- ¿¬¶ôó : yundream@joinc.co.kr --> 
 
<!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> 
<title>listen(2)</title> 
 
<!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> 
<para> 
    ¼ÒÄÏÀÇ ¿¬°á ´ë±â¿­À» ¸¸µç´Ù. 
</para> 
  
<!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>»ç¿ë¹ý</title> 
    <para> 
        <screen> 
#include <sys/socket.h> 
 
int listen(int s, int backlog); 
        </screen> 
    </para> 
</section> 
 
<!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>¼³¸í</title> 
    <para> 
        ¼­¹öÃø ÇÁ·Î±×·¥Àº socket(2)ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» ¹Þ¾ÆµéÀÏ  
        µè±â¼ÒÄÏÀ» ¸¸µé°Ô µÈ´Ù. Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀº µè±â¼ÒÄÏÀ» ÅëÇØ¼­ ÀÌ·ç¾îÁö´Âµ¥  
        Ŭ¶óÀÌ¾ðÆ®´Â connect(2)¸¦ È£ÃâÇØ¼­ ¼­¹ö¿¡ ¿¬°áÀ» ½ÃµµÇϰí, 3¹ø ¾Ç¼ö±â¹ýÀÌ  
        ¼º°øÇÏ¸é ¼­¹ö¿Í ¿ÏÀüÇÑ ¿¬°áÀÌ ¸¸µé¾î Áø´Ù.     
    </para> 
    <para> 
        ¸¸µé¾îÁø ¿¬°áÀº queue¿¡ µé¾î°¡°Ô µÇ°í ¼­¹öÃø¿¡¼­ accept(2)¸¦ È£ÃâÇÏ¸é  
        ºñ·Î¼­ ¼­¹ö´Â ¿¬°á¼ÒÄÏÀ» ¸¸µé°í ¸¸µé¾îÁø ¿¬°á¼ÒÄÏÀ» ÀÌ¿ëÇØ¼­  
        Ŭ¶óÀÌ¾ðÆ®¿Í Åë½ÅÇÏ°Ô µÈ´Ù.    
    </para> 
    <para> 
        listen(2) ½Ã½ºÅÛÈ£ÃâÀº SOCK_STREAM°ú SOCK_SEQPACKET¿¡¸¸ »ç¿ëµÈ´Ù. 
    </para> 
    <para> 
        <emphasis>a</emphasis>´Â socket(2)¿¡ ÀÇÇØ¼­ ¸¸µé¾îÁø µè±â ¼ÒÄÏÀÌ´Ù.  
        <emphasis>backlog</emphasis>´Â ¿¬°áÀÌ ´ë±âÇÒ ¼ö Àִ ťÀÇ °¹¼öÀÌ´Ù.  
        ¸¸¾à backlog¿¡ ¿¬°áÀÌ ¸ðµÎ Âù »óÅ¿¡¼­ »õ·Î¿î ¿¬°áÀ» ½ÃµµÇÑ´Ù¸é,  
        Ŭ¶óÀÌ¾ðÆ®´Â ECONNREFUSED ¿¡·¯¸¦ ¹Þ°ÔµÉ °ÍÀÌ´Ù. ¸¸¾à ÀçÀü¼ÛÀ» Áö¿øÇÏ´Â  
        ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÑ´Ù¸é ¿¡·¯¸¦ ¹«½ÃÇÏ°í ¼º°øÇÒ ¶§±îÁö Àç½Ãµµ¸¦ ÇÏ°Ô µÈ´Ù.   
    </para> 
</section> 
 
<!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> 
<section> 
    <title>¹Ýȯ°ª</title> 
    <para> 
        ¼º°øÇϸé 0À» ¸®ÅÏÇÏ°í ½ÇÆÐÇßÀ» °æ¿ì -1À» ¸®ÅÏÇϰí <emphasis>errno</emphasis> 
        ¸¦ ¼³Á¤ÇÑ´Ù. 
    </para> 
</section> 
 
<section> 
    <title>¿¡·¯</title> 
    <para> 
        <variablelist>     
            <varlistentry> 
            <term>EADDRINUSE</term>     
            <listitem> 
                <para>     
                    ´Ù¸¥ ¼ÒÄÏÀÌ µ¿ÀÏÇÑ Æ÷Æ®¸¦ »ç¿ëÇϰí ÀÖ´Ù. 
                </para>     
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>EBADF</term>     
            <listitem> 
                <para>     
                    <emphasis>s</emphasis>°¡ À߸øµÈ ¼ÒÄÏÁöÁ¤ÀÚÀÌ´Ù. 
                </para>     
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>EOPNOTSUP</term>     
            <listitem> 
                <para>     
                    ¼ÒÄÏÀÌ listenÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. 
                </para>     
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>ENOTSOCK</term>     
            <listitem> 
                <para>     
                    <emphasis>s</emphasis>°¡ ¼ÒÄÏÀÌ ¾Æ´Ï´Ù. 
                </para>     
            </listitem> 
            </varlistentry> 
        </variablelist>     
    </para> 
</section> 
 
<!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù                                                 --> 
<!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> 
<!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ­ ¿Ã·ÁÁּŵµ µË´Ï´Ù                               -->  
<!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê   --> 
<!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼­ ¿Ã¸®°Ú½À´Ï´Ù                               --> 
<!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä                            --> 
<section> 
    <title>¿¹Á¦</title> 
    <para> 
        <screen> 
#include <sys/socket.h> 
#include <sys/stat.h> 
#include <arpa/inet.h> 
#include <stdio.h> 
#include <string.h> 
 
int main(int argc, char **argv) 
{ 
    int server_sockfd, client_sockfd; 
    int client_len, n; 
    char buf[80]; 
    struct sockaddr_in clientaddr, serveraddr; 
 
    client_len = sizeof(clientaddr); 
 
    if ((server_sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) 
    { 
        perror("socket error : "); 
        exit(0); 
    } 
    bzero(&serveraddr, sizeof(serveraddr)); 
    serveraddr.sin_family = AF_INET; 
    serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); 
    serveraddr.sin_port = htons(atoi(argv[1])); 
 
    bind (server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)); 
    listen(server_sockfd, 5); 
 
    while(1) 
    { 
        memset(buf, 0x00, 80); 
        client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr, 
                            &client_len); 
 
        if ((n = read(client_sockfd, buf, 80)) <= 0) 
        { 
            close(client_sockfd); 
            continue; 
        } 
        if (write(client_sockfd, buf, 80) <=0) 
        { 
            perror("write error : "); 
            close(client_sockfd); 
        } 
        close(client_sockfd); 
    } 
} 
        </screen> 
        À§ ÇÁ·Î±×·¥Àº Ŭ¶óÀ̾ðÆ®ÀÇ ¸Þ½ÃÁö¸¦ Àо ±×´ë·Î Àç Àü¼ÛÇÏ´Â echo 
        ÇÁ·Î±×·¥ÀÌ´Ù.  
    </para> 
</section> 
<section> 
    <title>°ü·Ã¹®Çå</title> 
    <para> 
        <orderedlist> 
            <listitem> 
                <para> 
                    <ulink url="http://www.joinc.co.kr/modules.php?name=News&file=article&sid=57">Socket Layer</ulink> 
                </para> 
            </listitem> 
        </orderedlist> 
    </para> 
</section> 
</chapter> 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.