/* * echo_client.c * Written by Jonghwa Park */ #include #include #include #include #include #include #include #define BUFSIZE 1024 void error_handling(char *message); int main(int argc, char *argv[]) { int sock; char message[BUFSIZE]; int str_len; struct sockaddr_in serv_addr; if (argc != 3) { printf("Usage: %s \n",argv[0]); exit(1); } sock = socket(PF_INET, SOCK_STREAM, 0); if (sock == -1) error_handling("socket() error"); printf("¼ÒÄÏ »ý¼º: ¼ÒÄÏ Descriptor = %d\n", sock); memset(&serv_addr, 0, sizeof(serv_addr)); // /* ¼­¹ö ÁÖ¼ÒÁ¤º¸ ¼³Á¤ 1. sin_family : ÁÖ¼Ò Ã¼°è 2. sin_addr.s_addr : 32bit Ipv4 ÀÎÅÍ³Ý ÁÖ¼Ò 3. sin_port : ¼­¹ö Æ÷Æ® ¼³Á¤ */ serv_addr.sin_family= AF_INET; //ipv4; serv_addr.sin_addr.s_addr = inet_addr(argv[1]); // serv_addr.sin_port = htons(atoi(argv[2])); // printf("¼­¹ö ±¸Á¶Ã¼ ÇÒ´ç : \n"); printf("¼­¹ö ÁÖ¼Ò Á¤º¸ : serv_addr.sin_family = %d\n",serv_addr.sin_family); printf("¼­¹ö ÁÖ¼Ò Á¤º¸ : serv_addr.sin_addr.s_addr = %s\n",inet_ntoa(serv_addr.sin_addr)); printf("¼­¹ö ÁÖ¼Ò Á¤º¸ : serv_addr.sin_port = %d\n",ntohs(serv_addr.sin_port)); /* bind ÇÔ¼ö¸¦ ÅëÇؼ­ ¼ÒÄÏ¿¡ ÁÖ¼Ò¸¦ Á÷Á¢ ÇÒ´çÇÏÁö ¾Ê¾Æµµ connect ÇÔ¼ö È£Ãâ½Ã ÀÚµ¿ÀûÀ¸·Î ¼ÒÄÏ¿¡ ÁÖ¼Ò¿Í port°¡ ÇÒ´çÀÌ µÈ´Ù. ¸í½ÃÀû È£ÃâÀÌ ÇÊ¿äÇÏÁö ¾Ê°Ô µÈ´Ù. */ if (connect(sock,(struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) error_handling("Connect() error!"); while (1) { /* ¸Þ½ÃÁö ÀÔ·Â, Àü¼Û */ fputs("Àü¼ÛÇÒ ¸Þ½ÃÁö¸¦ ÀÔ·ÂÇϼ¼¿ä (q to quit) : ", stdout); fgets(message, BUFSIZE, stdin); if (!strcmp(message, "q\n")) break; write(sock, message, strlen(message)); printf("¼­¹ö·Î ¸Þ½ÃÁö Àü¼Û: %s\n", message); /* ¸Þ½ÃÁö ¼ö½Å, Ãâ·Â */ str_len = read(sock, message, BUFSIZE-1); message[str_len] = 0; printf("\n\n ¼­¹ö·ÎºÎÅÍ Àü¼ÛµÈ ¸Þ½ÃÁö : %s\n", message); } close(sock); return 0; } void error_handling(char *message) { fputs(message, stderr); fputc('\n',stderr); exit(1); }