Unix Domain Socket UDP
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



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

Unix Domain Socket - UDP

1절. ¼Ò°³

¿ì¸®´Â ÀÌ¹Ì ÀÌÀü¿¡ Unix Domain Socket¸¦ ÀÌ¿ëÇÑ IPC ¿¡¼­ Unix Domain Socket ¿¡ ´ëÇÑ ±âº»ÀûÀÎ ³»¿ëÀ» ´Ù·ç¾ú¾ú´Ù.

±×¶§´Â SOCK_STREAM À» ÀÌ¿ëÇÑ ¿¬°áÁöÇâÀÇ Socket ¸¦ »ç¿ëÇß¾ú´Âµ¥, internet ¼ÒÄϰú ¸¶Âù°¡Áö·Î UDP Ư¼º Socket ¸¦ »ç¿ëÇÒ¼öµµ ÀÖ´Ù. À̹ø ±Û ¿¡¼­´Â UDP ¸¦ ÀÌ¿ëÇÑ Unix Domain Socket ¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.


2절. Unix Domain Socket (UDP)

2.1절. Ư¡

internet socket »ó¿¡¼­ UDP ¸¦ ´Ù·ê¶§, °ü½ÉÀ» °¡Áö´Â Ư¼ºÀÌ ºñ¿¬°áÁöÇ⼺À̸ç, ±×·±ÀÌÀ¯·Î µ¥ÀÌŸ¸¦ À¯½ÇÇÒ¼öµµ ÀÖÀ¸¸ç, µ¥ÀÌŸÀÇ ¼ø¼­°¡ ¹Ù²ð¼ö ÀÖ´Ù. ±×·¯¹Ç·Î Áß¿ä µ¥ÀÌŸ Åë½ÅÀ» À§ÇÑ ÇÁ·ÎÅäÄݷδ UDP °¡ ÀûÇÕÇÏÁö ¾Ê´Ù. ¶ó´Â Á¡ÀÌ µÉ°ÍÀÌ´Ù.

±×·¯³ª Unix Domain ¿µ¿ªÀÇ UDP ´Â internet ¿µ¿ª°ú´Â Ư¼ºÀÌ Á» ´Ù¸£´Ù°í ÇÒ¼ö ÀÖ´Ù. Unix Domain ¿¡¼­ÀÇ UDP ´Â ÀÏÁ¾ÀÇ PIPE ¿Í °°Àº ÇüÅ·Π´Ù·ç¾îÁø´Ù. °Ô´Ù°¡ µ¿ÀÏÇÑ °°Àº ½Ã½ºÅÛ ¿µ¿ª¿¡¼­ÀÇ µ¥ÀÌŸ ±³È¯À̹ǷΠÆÐŶÀÌ À¯½ÇµÇ°Å³ª, ¼ø¼­°¡ µÚ¹Ù²î´Â µîÀÇ ¹®Á¦´Â ÀüÇô ¹ß»ýÇÏÁö ¾ÊÀ»°Å¶ó°í Àå´ãÇÒ¼ö ÀÖ´Ù.


2.2절. ¸Þ½ÃÁö Àü´Þ ¹æ½Ä

internet socket ¿¡ Àü´ÞµÇ´Â ÆÐŶµéÀÌ Çì´õ + ¹Ùµð ·Î ÀÌ·ç¾îÁö´Â °Í°ú ¸¶Âù°¡Áö·Î, Domain ¿µ¿ª¿¡¼­ÀÇ µ¥ÀÌŸµµ Çì´õ + ¹Ùµð ·Î ÀÌ·ç¾îÁø´Ù. ±×·¯³ª Çì´õÀÇ ±¸¼º¿ä¼Ò´Â ¸Å¿ì ´Ù¸£´Ù.

Domain ¿µ¿ª¿¡¼­ÀÇ µ¥ÀÌŸ Åë½ÅÀº ¾Ë°ÚÁö¸¸ "ÁöÁ¤µÈ ÆÄÀÏ" À» ÅëÇØ¼­ ÀÌ·ç¾îÁö°Ô µÈ´Ù. ÀÌ ÆÄÀÏ·Î µ¥ÀÌŸ¸¦ ¾²°í/Àд ÀÛ¾÷À» Çϸç, À̰ÍÀº ¸¶Ä¡ FIFO ¿Í °°Àº pipe ÇüÅ·ΠÀü´ÞµÈ´Ù.

±×·¯¹Ç·Î Çì´õ¿µ¿ª¿¡´Â ´Ù¸¥ ±âŸÀÇ Á¤º¸°¡ µé¾î°¡´Â°Ô ¾Æ´Ñ Åë½ÅÀ» À§ÇÑ ÆÄÀÏÁ¤º¸ °¡ µé¾î°¡°Ô µÈ´Ù. /usr/include/sys/un.h ÀÇ sockaddr_un ±¸Á¶Ã¼¸¦ º¸¸é È®½ÇÈ÷ ÀÌÇØ°¡ °¡´ÉÇÒ °ÍÀÌ´Ù.

struct sockaddr_un
{
    __SOCKADDR_COMMON (sun_);
    char sun_path[108];     /* Path name.  */
};
			
À§ÀÇ ±¸Á¶Ã¼¸¦ º¸¸é, sockaddr_in °ú´Â ´Þ¸® ´ÜÁö ÆÄÀÏÀÇ À§Ä¡ ÁöÁ¤À» À§ÇÑ 108¹ÙÀÌÆ® Å©±âÀÇ ¹è¿­º¯¼ö¸¸ Àִ°ÍÀ» ¾Ë¼ö ÀÖ´Ù.


2.3절. ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ±¸¼º¹æ½Ä

internet socket À» ÀÌ¿ëÇÑ ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ±¸¼º°ú´Â ´Þ¸® Domain ¿µ¿ª¿¡¼­ udp ¸¦ ÀÌ¿ëÇÑ ¼­¹ö/Ŭ¶óÀ̾ðÆ®ÀÇ ±¸¼ºÀº ÁÖÀÇÇØ¾ß µÉ ¸î°¡Áö Á¡ÀÌ ÀÖ´Ù.

°¡Àå ±âº»ÀûÀÎ ¹®Á¦´Â Domain ¿µ¿ª¿¡¼­ÀÇ udp ´Â Internet ¿µ¿ª¿¡¼­ÀÇ udp ¿Í´Â ´Þ¸® °æ·Î¸¦ ÁöÁ¤ ÇÒ¼ö ¾ø´Ù´Â ´ÜÁ¡À» °¡Áø´Ù. À̰ÍÀº ´ÙÁßÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ¹Þ¾ÆµéÀÌ´Â ¼­¹öÀÇ °æ¿ì ¹®Á¦°¡ µÉ¼ö ÀÖ´Ù.

´ÙÀ½Àº Internet ¿µ¿ªÀÇ udp ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨ÀÇ °æ¿ìÀÌ´Ù.

                   +----------+
          +------- | Client 1 | address 1
          |        +----------+
 +------+ |        +----------+
 | ¼­¹ö |-+------- | Client 2 | address 2 
 +------+ |        +----------+
          |        +----------+
          +------- | Client 3 | address 3
                   +----------+
			
Internet ¿µ¿ª¿¡¼­ÀÇ ¼­¹ö´Â ´ÜÁö ÇϳªÀÇ ¼ÒÄÏÁöÁ¤¹øÈ£(endpoint) ¸¸À» °¡Áö°íµµ ´ÙÁßÀÇ Å¬¶óÀÌ¾ðÆ®¿ÍÀÇ ¿¬°áÀÌ °¡´ÉÇÏ´Ù. ±× ÀÌÀ¯´Â Internet ¿µ¿ª¿¡¼­ Åë½ÅÀ» ÇÒ¶§ UDP ´Â IP »óÀ§ ÇÁ·ÎÅäÄÝÀ̹ǷΠIP ÇÁ·ÎÅäÄÝÀÇ Çì´õ¸¦ ÅëÇØ¼­ ÇØ´ç ¸Þ½ÃÁö°¡ ¾îµð¿¡¼­ Ãâ¹ßÇß´ÂÁö ¾Ë¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î ±»ÀÌ select(2) ³ª poll(2) °°Àº ÀÛ¾÷¾øÀÌ ´ÜÁö ÇϳªÀÇ ¼ÒÄÏÁöÁ¤¹øÈ£·Î Åë½ÅÀÌ °¡´ÉÇØÁø´Ù.( UDP ÇÁ·Î±×·¡¹ÖÀÇ ±âÃʸ¦ Âü°íÇ϶ó.)

±×·¯³ª Unix Domain ¿µ¿ªÀÇ udp ¼ÒÄÏÀ̶ó¸é À̾߱Ⱑ ´Þ¶óÁø´Ù. ±âº»ÀûÀ¸·Î °¡Áú¼ö ÀÖ´Â Á¤º¸°¡ "ÆÄÀÏ °æ·Î" »ÓÀ̹ǷΠ´ÙÁßÀÇ Å¬¶óÀÌ ¾ðÆ®·Î ºÎÅÍ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ»¶§ ¾î¶² Ŭ¶óÀÌ¾ðÆ®·Î ºÎÅÍ ¸Þ½ÃÁö°¡ Àü´ÞµÇ¾ú´ÂÁö¸¦ ¾Ë¼ö°¡ ¾ø´Â °ÍÀÌ´Ù. ¹°·Ð À̰ÍÀº µ¥ÀÌŸ ¿µ¿ª¿¡ Ŭ¶óÀÌ¾ðÆ®¸¦ ½Äº°ÇÒ¼ö ÀÖ´Â ¾î¶² Á¤º¸¸¦ º¸³¿À¸·Î½á ÇØ°áÇÒ¼ö ÀÖ±ä ÇϰÚÁö¸¸, ¼³»ç ±×·¸´Ù ÇÏ´õ¶óµµ ¼­¹ö´Â ´ÙÁßÀÇ Å¬¶óÀ̾ðÆ®Áß ¿øÇϴ Ŭ¶óÀ̾ðÆ®(client)·Î ¸Þ½ÃÁö¸¦ º¸³¾¹æ¹ýÀÌ ¾ø´Ù. ¸¸¾à ´ÙÁßÀÇ Å¬¶óÀÌ¾ð Æ®°¡ ¶°ÀÖ´Â »óÅ¿¡¼­ ¸Þ½ÃÁö¸¦ º¸³½´Ù¸é ´©°¡ ¸ÕÀú ÀÐÀ»Áö ¿¹ÃøÇÒ¼ö°¡ ¾ø°ÔµÈ´Ù.

À̹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­´Â °¢ Ŭ¶óÀÌ¾ðÆ® ¸¶´Ù Åë½ÅÀ» À§ÇÑ °¢°¢ÀÇ ¼ÒÄÏÁöÁ¤ÆÄÀÏ À» »ý¼ºÇÒ¼ö¹Û¿¡ ¾ø´Ù. À̰ÍÀº FIFO ¿¡¼­ ¼­¹ö/´ÙÁßŬ¶óÀÌ¾ðÆ® ¸¦ ±¸¼ºÇϱâ À§ÇÑ ¹æ¹ý°ú ¸¶Âù°¡ÁöÀÌ´Ù.

                  +----------+
              +---| Client 1 |
 +------+     |   +----------+
 |      |-----+   +----------+
 | ¼­¹ö |---------| Client 2 |
 |      |-----+   +----------+
 +------+     |   +----------+    
              +---| Client 3 |
                  +----------+
			
°á±¹¿¡´Â Domain ¿µ¿ª¿¡¼­ udp ¼ÒÄÏÀ» »ç¿ëÇϱâ À§Çؼ­´Â select, poll µîÀ» ½á¾ß¸¸ ÇÑ´Ù´Â °á·Ð¿¡ µµ´ÞÇÑ´Ù.

¿©±â¿¡¼­ ÇѰ¡Áö ±Ã±ÝÇÑÁ¡ÀÌ ¹®µæ »ý±æ°ÍÀÌ´Ù. Domain ¿µ¿ª UDP ¼ÒÄÏ ¿¡¼­ÀÇ ´ÙÁßŬ¶óÀÌ¾ðÆ®¸¦ ¹Þ¾ÆµéÀ̱â À§ÇÑ ¼­¹öÀÇ Á¦ÀÛÀ» À§Çؼ­´Â ±×·³ Ŭ¶óÀ̾ðÆ®ÀÇ ¼ýÀÚ¸¸Å­ ¼ÒÄÏÆÄÀÏÀ» »ý¼º½ÃÄѾßÇÑ´Ù´Â ¶æÀε¥, ±×·¸´Ù¸é ¼­¹ö´Â ¾î¶»°Ô Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÇÒÁÙ ¾Ë°í Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö ¸ðµÎ°¡ ¾Ë¼ö ÀÖ´Â ¼ÒÄÏÆÄÀÏÀ» »ý¼ºÇÒ°ÍÀΰ¡ ?

À̹®Á¦ÀÇ ÇØ°á¹æ¹ýÀº ¿©·¯°¡Áö°¡ µÉ°ÍÀÌ´Ù. ¸¶Ä¡ internet ÀÇ TCP ¼ÒÄÏÀÌ ´ÙÁßÀÇ ¿¬°áÀ» ¹Þ¾ÆµéÀ̱â À§Çؼ­ accept(2) ÇÏ´Â ÇϳªÀÇ endpoint ¼ÒÄÏÀ» µÎ´Â °Íó·³, Domain ¿µ¿ª¿¡¼­µµ ÇϳªÀÇ endpoint ÆÄÀÏÀ» µÎ´Â °ÍÀÌ´Ù. ¹°·Ð ÀÌ endpoint ÆÄÀÏÀÇ À̸§Àº ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°£¿¡ ¾à¼ÓÀÌ µÇ¾î ÀÖ¾î¾ß ÇÒ°ÍÀÌ´Ù.

±×·¯¸Õ ¼­¹ö´Â ÃÖÃÊ¿¡ endpoint ¸¦ À§ÇÑ ¼ÒÄÏÆÄÀÏÀ» Çϳª »ý¼ºÇϰí À̰ÍÀ» ÅëÇØ¼­ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÇϸé Àû´çÇÑ À̸§À¸·Î »õ·Î¿î ¼ÒÄÏÆÄÀÏÀ» ¸¸µç´ÙÀ½¿¡ ÀÌ ÆÄÀÏÀ̸§À» Ŭ¶óÀÌ¾ðÆ®¿¡°Ô Àü´ÞÇØ¼­ Ŭ¶óÀÌ¾ðÆ®°¡ Àü´Þ¹ÞÀº ÆÄÀÏÀ̸§À¸·Î ¾²±â¸¦ Çϵµ·Ï ÇÏ¸é µÈ´Ù.


2.3.1절. ¿¹»ó°ú´Â ´Þ¸® »ç¿ëÇÏ´Â°Ô Á» ¹ø°Å·Ó±º¿ä ?

¿¹»ó°ú´Â ´Þ¸® ´ÙÁßÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ¹Þ¾ÆµéÀ̵µ·Ï Domain ¿µ¿ª udp ¼ÒÄÏÀ» ±¸¼ºÇÏ´Â°Ô Á» ±î´Ù·Ó´Ù¶ó´Â »ý°¢ÀÌ µé¼öµµ ÀÖÀ» °ÍÀÌ´Ù.

±×·¯³ª ¾îÂ÷ÇÇ ³»ºÎ ½Ã½ºÅÛ¿¡¼­ÀÇ Åë½Å¿ëÀ̶ó¸é ´ëºÎºÐÀÇ °æ¿ì ¿©·¯°³ÀÇ Å¬¶óÀÌ¾ðÆ®°¡ ºÙ´Â´Ù°í ÇÏ´õ¶óµµ, ±× Ŭ¶óÀÌ¾ðÆ®°¡ Á¤ÇØÁ® ÀÖ´Â °æ¿ì°¡ ´ëºÎºÐÀÌ´Ù. ±×·¯¹Ç·Î ±×³É °¢ Ŭ¶óÀÌ¾ðÆ® ¸¶´Ù ¾î¶² ÆÄÀÏÀ» Åë½Å¿¡ ¾²¶ó°í ¾Æ¿¹ ÁöÁ¤ÇØÁÖ¸é µÈ´Ù. ±×·¯¸é ´ÜÁö select ³ª poll ¸¸À» µ¹¸²À¸·Î½á, °£´ÜÇÏ°Ô ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏ´Ù.

¶ÇÇÑ Domain ¿µ¿ª¿¡¼­ÀÇ TCP ¼ÒÄϰú´Â ´Þ¸® ´Ù¼Ò º¹ÀâÇÑ ¿¬°á°ú ¿¬°á´ë±â¸¦ À§ÇÑ ÀÛ¾÷ÀÌ Çʿ䰡 ¾øÀ¸¹Ç·Î ÄÚµùÇϱ⵵ °£ÆíÇÏ´Ù´Â ÀåÁ¡µµ °¡Áö°í ÀÖ´Ù. ¶ÇÇÑ ÆÐŶ´ÜÀ§·Î ÁÖ°í ¹ÞÀ½À¸·Î Á÷°üÀûÀ¸·Î ÀÌÇØÇϱ⠽¬¿î Äڵ带 ¸¸µé¼ö ÀÖ´Ù´Â ÀåÁ¡µµ °¡Áø´Ù.


2.4절. ¿¹Á¦ ÄÚµå

±×·³ ¿¹Á¦ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ. UDP ÇÁ·Î±×·¡¹ÖÀÇ ±âÃÊ ¿¡¼­ ´Ù·ç¾ú´ø µ¡¼À ÇÁ·Î±×·¥ÀÎ sum_server.c ¿Í sum_client.c ¸¦ Domain ¿µ¿ª¿¡¼­ µ¿ÀÛÇϵµ·Ï º¯°æ½Ãų °ÍÀÌ´Ù. À§ÀÇ ÇÁ·Î±×·¥µéÀ» ÂüÁ¶Çϸ鼭 ÄÚµùÇϵµ·Ï ÇÏÀÚ.

ÇÁ·Î±×·¥ÀÚü´Â ÀϹÝÀûÀÎ Internet UDP ¼ÒÄÏ ÇÁ·Î±×·¥°ú °ÅÀÇ µ¿ÀÏÇÔÀ¸·Î ÀÌÇØÇϴµ¥ ÀÌÇØ°¡ ¾øÀ»°ÍÀÌ´Ù.


2.4.1절. ¼­¹öÇÁ·Î±×·¥

¿¹Á¦ : sum_server.c

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>

struct data
{
    int a;
    int b;
    int sum;
};
int main(int argc, char **argv)
{
    int sockfd;
    int clilen;
    struct data mydata;
    struct sockaddr_un clientaddr, serveraddr;

    sockfd = socket(AF_UNIX, SOCK_DGRAM, 0); 
    if (sockfd < 0)
    {
        perror("socket error : ");
        exit(0);
    }    
    unlink(argv[1]);

    bzero(&serveraddr, sizeof(serveraddr));
    serveraddr.sun_family = AF_UNIX;
    strcpy(serveraddr.sun_path, argv[1]);

    if (bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
    {
        perror("bind error : ");
        exit(0);
    }
    clilen  = sizeof(clientaddr); 


    while(1)
    {
        recvfrom(sockfd, (void *)&mydata, sizeof(mydata), 0, (struct sockaddr *)&clientaddr, &clilen); 
        printf("%d + %d = %d\n", mydata.a, mydata.b, mydata.a + mydata.b);    
        sendto(sockfd, (void *)&mydata, sizeof(mydata), 0, (struct sockaddr *)&clientaddr, clilen);
    }
    close(sockfd);
    exit(0);
}
				


2.4.2절. Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥

¿¹Á¦ : sum_client.c


// Ŭ¶óÀÌ¾ðÆ® ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é ¾ÈµË´Ï´Ù. 
// ¼­¹ö¿¡¼­ º¸³¾ ¶§, Ŭ¶óÀÌ¾ðÆ®°¡ ¹ÙÀεåÇØ¾ß Á¤º¸¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. 
// ÀÌ ±ÛÀ» º¸½Ã´Â ºÐÀº ÀûÀýÇÑ ÄÚµå·Î ¼öÁ¤ÇØ Áֽñ⠹ٶø´Ï´Ù. 
// ±×¿Ü ±âŸ °£´ÜÇÑ ¿ÀŸ ¹× ŸÀÔ ¿À·ù´Â Á¦°¡ ¼öÁ¤ÇÏ°í °©´Ï´Ù. - ¿ë¿î

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>

struct data
{
    int a;
    int b;
    int sum;
};
int main(int argc, char **argv)
{
    int sockfd;
    struct sockaddr_un serveraddr;
    int  clilen;
    struct data mydata;

    sockfd = socket(AF_UNIX, SOCK_DGRAM, 0); 
    if (sockfd < 0)
    {
        perror("exit : ");
        exit(0);
    }

    bzero(&serveraddr, sizeof(serveraddr));
    serveraddr.sun_family = AF_UNIX;
    strcpy(serveraddr.sun_path, argv[1]);
    clilen = sizeof(serveraddr);

    mydata.a = atoi(argv[2]);
    mydata.b = atoi(argv[3]);
    mydata.sum =0;

    if (sendto(sockfd, (void *)&mydata, sizeof(mydata), 0, 
                (struct sockaddr *)&serveraddr, clilen) < 0)
    {
        perror("send error : ");
        exit(0);
    }
    if (recvfrom(sockfd, (void *)&mydata, sizeof(mydata), 0,
                (struct sockaddr *)&serveraddr, (socklen_t *)&clilen) < 0)
    {
        perror("recv error : ");
        exit(0);
    }
    printf("result is : %d\n", mydata.sum);


    close(sockfd);
    exit(0);
}
				


2.4.3절. Å×½ºÆ®

¸ÕÀú ¼­¹ö¸¦ ¶ç¿î´ÙÀ½¿¡, Ŭ¶óÀÌ¾ðÆ®¸¦ ÅëÇØ¼­ ´õÇÏ°í ½ÍÀº 2°³ÀÇ ¼ýÀÚ¸¦ ÀÎÀÚ¸¦ ÅëÇØ¼­ ³Ñ±â¸é µÈ´Ù.

[root@localhost src]# ./unix_domain_udp_server /tmp/test_udp 
5 + 6 = 11
7 + 1024 = 1031
...
				
[root@localhost src]# ./unix_domain_udp_client /tmp/test_udp 5 6
[root@localhost src]# ./unix_domain_udp_client /tmp/test_udp 7 1024
				


3절. °á·Ð

´Ù¸¥ Domain ¿µ¿ª ¼ÒÄϰú ¸¶Âù°¡Áö·Î, IPC ´ë¿ëÀ¸·Î »ç¿ë°¡´ÉÇÏ´Ù. TCP ¼ÒÄÏÀÌ IPC ´ë¿ëÀ¸·Î »ç¿ëÇϱⰡ ºñ±³Àû º¹ÀâÇÏ´Ù´Â ´ÜÁ¡°ú, ¿À´Ã ¾Ë¾Æº» UDP µµ¸ÞÀÎ ¼ÒÄϰú ¾ÆÁÖ ºñ½ÁÇÑ FIFO °¡ ¹ü¿ë¼ºÀÌ Á»´õ ¶³¾îÁö´Â ´ÜÁ¡À» º¸¿ÏÇÑ Àû´çÇÏ°í Æí¸®ÇÏ°Ô »ç¿ë°¡´ÉÇÑ IPC ·Î½áÀÇ ¿ëµµ¸¦ Á¦°øÇØ ÁÙ°ÍÀÌ´Ù.



EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.