struct sockaddr, sockaddr_in, sockaddr_un
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¸Þ´º¾ó>15>sockaddr



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

»ç¿ë

bind(), connect()¸¦ »ç¿ëÇÏ´Â socket ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö¿¡¼­ ÁÖ¼Ò¿Í Æ÷Æ®Á¤º¸¸¦ ÀúÀåÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.
<</usr/include/bits/socket.h>> 
struct sockaddr  
{ 
    unsigned short sa_family;  // Address family and length 
    char sa_data[14];            // Address data 
} 
 

À§ÀÇ ³×Æ®¿öÅ© °ü·Ã ÇÔ¼öµéÀº ±âº» µ¥ÀÌÅÍÇüÀ¸·Î sockaddr À» ¹Þ¾ÆµéÀδÙ. ±×·±µ¥ sockaddr ·Î´Â ´Ù¾çÇÑ À¯ÇüÀÇ socketÀ» ¹Þ¾ÆµéÀÏ ¼ö ¾ø´Ù. ¿¹¸¦ µé¾î AF_INET ¼ÒÄϵµ ÀÖ°í AF_UNIX ¼ÒÄÏÀÌ Àִµ¥ À̵éÀº ±¸Á¶ÀÚü°¡ ¿ÏÀüÈ÷ ´Ù¸£±â ¶§¹®ÀÌ´Ù.

AF_INETÀÇ °æ¿ì¿¡´Â struct sockaddr_in À» »ç¿ëÇϰí AF_UNIX ÀÇ °æ¿ì¿¡´Â struct sockaddr_un À» »ç¿ëÇÑ´Ù. ±×·¯¹Ç·Î ½ÇÁ¦ ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö¿¡¼­´Â sockaddr ·Î Çüº¯È¯À» ÇØ¼­ »ç¿ëÇØ¾ß ÇÑ´Ù. Çüº¯È¯µÈ µ¥ÀÌÅ͸¦ ¹Þ¾ÆµéÀÎ ÇÔ¼ö´Â sa_family °ªÀ» ÀÌ¿ëÇØ¼­ µ¥ÀÌÅÍÀÇ Á¾·ù¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.

AF_UNIX¿¡¼­ÀÇ »ç¿ë
struct sockaddr_un serveraddr;  
 
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);  
 

AF_INET¿¡¼­ÀÇ »ç¿ë
struct sockaddr_in serveraddr; 
 
server_sockfd = socket(AF_INET, SOCK_STREAM, 0); 
serveraddr.sin_family = AF_INET; 
serveraddr.sin_addr.s_addr = inet_addr("218.234.19.87"); 
serveraddr.sin_port = htons(atoi(argv[1])); 
 
client_len = sizeof(serveraddr); 
 
if (connect(server_sockfd, (struct sockaddr *)&serveraddr, client_len) < 0) 
{ 
    perror("connect error :"); 
    exit(0); 
} 
 

struct sockaddr_in

AF_INET µµ¸ÞÀÎÀÇ ¼ÒÄÏ¿¡¼­ »ç¿ëÇÏ´Â ±¸Á¶Ã¼
<</usr/include/netinet/in.h 
struct sockaddr_in 
  { 
    __SOCKADDR_COMMON (sin_);  /* sa_family_t sin_family */ 
    in_port_t sin_port;                 /* Port number.  */ 
    struct in_addr sin_addr;            /* Internet address.  */ 
 
    /* Pad to size of `struct sockaddr'.  */ 
    /* °á±¹ 8 byte */ 
    unsigned char sin_zero[sizeof (struct sockaddr) - 
                           __SOCKADDR_COMMON_SIZE - 
                           sizeof (in_port_t) - 
                           sizeof (struct in_addr)]; 
  }; 
 

struct sockaddr_un

<</usr/include/sys/un.h>> 
struct sockaddr_un 
  { 
    __SOCKADDR_COMMON (sun_); 
    char sun_path[108];         /* Path name.  */ 
  }; 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.