4Àå echo_server.c ¿¹¿Ü ó¸®
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

echo_server.c ¿¹¿Ü ó¸®

ÄÚµå´Â ÇÁ·Î±×·¥ ½ÇÇà ÀÎÀÚ·Î Æ÷Æ® ¹øÈ£¸¦ ¹Þ¾Æ¼­ ó¸®ÇÕ´Ï´Ù. ±×·±µ¥, ¿¹¿Ü󸮸¦ ÇÏÁö ¾Ê¾Æ¼­ ½ÇÇàÀÎÀÚ ¾øÀÌ ½ÇÇàÇÒ °æ¿ì ¼¼±×¸ÕÆ® ¿¡·¯¸¦ Ãâ·ÂÇÕ´Ï´Ù.

´ÙÀ½Àº Ã¥¿¡ ¼Ò°³µÈ ÄÚµåÀÔ´Ï´Ù.
001  int main(int argc, char **argv)
002  {
003      int server_sockfd, client_sockfd;
004      int client_len, n;
005      char buf[MAXBUF];
006      struct sockaddr_in clientaddr, serveraddr;
007  
008      client_len = sizeof(clientaddr);
009      if ((server_sockfd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP )) == -1)
010      {
011          perror("socket error : ");
012          exit(0);
013      }
014      bzero(&serveraddr, sizeof(serveraddr));
015      serveraddr.sin_family = AF_INET;
016      serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
017      serveraddr.sin_port = htons(atoi(argv[1]));
018  
½ÇÇàÀÎÀÚ°¡ ¾øÀ» °æ¿ì 17¹ø¿¡¼­ ¼¼±×¸ÕÆ® ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù.

´ÙÀ½Ã³·³ ½ÇÇàÀÎÀÚ¸¦ °Ë»çÇÏ´Â Äڵ带 ³Ö¾îÁÖ´Â °ÍÀ¸·Î ¿¹¿Ü󸮸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
int main(int argc, char **argv) 
{ 
    int server_sockfd, client_sockfd; 
    int client_len, n; 
    char buf[MAXBUF]; 
    struct sockaddr_in clientaddr, serveraddr; 
 
    // ÇÁ·Î±×·¥ ½ÇÇà ÀÎÀÚ¸¦ °Ë»çÇÑ´Ù. 
    // ¸¸¾à ½ÇÇàÀÎÀÚ°¡ ¾øÀ¸¸é »ç¿ë¹ýÀ» Ãâ·ÂÇϰí ÇÁ·Î¼¼½º¸¦ Á¾·áÇÑ´Ù. 
    if(argc !=2 ) 
    { 
        fprintf(stderr,"Usage : %s [port]\n", argv[0]); 
        return 1; 
    } 
    client_len = sizeof(clientaddr); 
    if ((server_sockfd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP )) == -1) 
    { 
        perror("socket error : "); 
        exit(0); 
    } 
 

echo_server.c ¿ÏÀü ÄÚµå

#include <sys/socket.h> 
#include <sys/stat.h> 
#include <arpa/inet.h> 
#include <stdio.h> 
#include <string.h> 
 
#define MAXBUF 1024 
int main(int argc, char **argv) 
{ 
    int server_sockfd, client_sockfd; 
    int client_len, n; 
    char buf[MAXBUF]; 
    struct sockaddr_in clientaddr, serveraddr; 
 
    if(argc !=2 ) 
    { 
        fprintf(stderr,"Usage : %s [port]\n", argv[0]); 
        return 1; 
    } 
    client_len = sizeof(clientaddr); 
    if ((server_sockfd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP )) == -1) 
    { 
        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, MAXBUF); 
        client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr, 
            &client_len); 
        printf("New Client Connect: %s\n", inet_ntoa(clientaddr.sin_addr)); 
        if ((n = read(client_sockfd, buf, MAXBUF)) <= 0) 
        { 
            close(client_sockfd); 
            continue; 
        } 
        if (write(client_sockfd, buf, MAXBUF) <=0) 
        { 
            perror("write error : "); 
            close(client_sockfd); 
        } 
        close(client_sockfd); 
    } 
    close(server_sockfd); 
    return 0; 
} 
 

echo_client.c ¿ÏÀü ÄÚµå

  • echo_clinet°¡ ¿¬°á Æ÷Æ® ¹øÈ£¸¦ ½ÇÇà ÀÎÀÚ·Î °¡Á®¿Àµµ·Ï ¼öÁ¤Çß½À´Ï´Ù.
#include <sys/socket.h>  /* ¼ÒÄÏ °ü·Ã ÇÔ¼ö */ 
#include <arpa/inet.h>   /* ¼ÒÄÏ Áö¿øÀ» À§ÇÑ °¢Á¾ ÇÔ¼ö */ 
#include <sys/stat.h> 
#include <stdio.h>      /* Ç¥ÁØ ÀÔÃâ·Â °ü·Ã */ 
#include <string.h>     /* ¹®ÀÚ¿­ °ü·Ã */ 
#include <unistd.h>     /* °¢Á¾ ½Ã½ºÅÛ ÇÔ¼ö */ 
 
#define MAXLINE    1024 
 
int main(int argc, char **argv) 
{ 
    struct sockaddr_in serveraddr; 
    int server_sockfd; 
    int client_len; 
    char buf[MAXLINE]; 
 
    if(argc != 2) 
    { 
      fprintf(stderr, "Usage : %s [port]\n", argv[0]); 
      return 1; 
    } 
    if ((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
    { 
        perror("error :"); 
        return 1; 
    } 
 
    /* ¿¬°á¿äûÇÒ ¼­¹öÀÇ ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£ ÇÁ·ÎÅäÄݵîÀ» ÁöÁ¤ÇÑ´Ù. */ 
    server_sockfd = socket(AF_INET, SOCK_STREAM, 0); 
    serveraddr.sin_family = AF_INET; 
    serveraddr.sin_addr.s_addr = inet_addr("127.0.01"); 
    serveraddr.sin_port = htons(atoi(argv[1])); 
 
    client_len = sizeof(serveraddr); 
 
    /* ¼­¹ö¿¡ ¿¬°áÀ» ½ÃµµÇÑ´Ù. */ 
    if (connect(server_sockfd, (struct sockaddr *)&serveraddr, client_len)  == -1) 
    { 
        perror("connect error :"); 
        return 1; 
    } 
 
    memset(buf, 0x00, MAXLINE); 
    read(0, buf, MAXLINE);    /* Űº¸µå ÀÔ·ÂÀ» ±â´Ù¸°´Ù. */ 
    if (write(server_sockfd, buf, MAXLINE) <= 0) /* ÀÔ·Â ¹ÞÀº µ¥ÀÌÅ͸¦ ¼­¹ö·Î Àü¼ÛÇÑ´Ù. */ 
    { 
        perror("write error : "); 
        return 1; 
    } 
    memset(buf, 0x00, MAXLINE); 
    /* ¼­¹ö·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àд´Ù. */ 
    if (read(server_sockfd, buf, MAXLINE) <= 0) 
    { 
        perror("read error : "); 
        return 1; 
    } 
    close(server_sockfd); 
    printf("read : %s", buf); 
    return 0; 
} 
 

Å×½ºÆ® ¹æ¹ý

  1. echo_server.c ¸¦ Àû´çÇÑ Æ÷Æ®¹øÈ£·Î ½ÇÇàÇÑ´Ù.

    # ./echo_server 3500 
     
  2. echo_client.c ·Î ¿¬°áÇÑ´Ù.

    # ./echo_client 3500 
    hello world 
    read : hello world 
    # 
     
  3. echo_server ¿¡¼­´Â ¿¬°á Á¤º¸°¡ Ãâ·Â µË´Ï´Ù.

    $ ./echo_server 3500 
    New Client Connect: 127.0.0.1 
    New Client Connect: 127.0.0.1 
     
category_Brain TCP/IP
category__500
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.