본문 바로가기
TCP/IP/리눅스기반

UDP 에코 클라이언트<리눅스기반>

by 꿀꿀이냐옹이 2009. 6. 30.
반응형

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>

#define BUFSIZE 1024

void error_handling(char* meg);

int main(int argc,char** argv)
{
        int csock;

        char meg[BUFSIZE];

        int strl,addrl;

        struct sockaddr_in saddr;
        struct sockaddr_in faddr;

        if(argc!=3)
        {
                printf("Usage : %s <IP> <PORT>\n",argv[0]);
                exit(1);
        }

        csock=socket(PF_INET,SOCK_DGRAM,0);
        if(csock==-1)
                error_handling("socket() error");

        memset(&saddr,0,sizeof(saddr));
        saddr.sin_family=AF_INET;
        saddr.sin_addr.s_addr=inet_addr(argv[1]);
        saddr.sin_port=htons(atoi(argv[2]));


        while(1)
        {
                fputs("전송할 메시지를 입력하세요 (q to quit) : ",stdout);
                fgets(meg,BUFSIZE,stdin);

                if(!strcmp(meg,"q\n")) break;

                sendto(csock,meg,strlen(meg),0,(struct sockaddr*)&saddr,sizeof(saddr));

                addrl=sizeof(faddr);

                strl=recvfrom(csock,meg,BUFSIZE,0,(struct sockaddr*)&faddr,&addrl);

                meg[strl]=0;

                printf("서버로부터 전송된 메시지 : %s\n",meg);
        }
        close(csock);

        return 0;
}

void error_handling(char* meg)
{
        fputs(meg,stderr);
        fputc('\n',stderr);
        exit(1);
}


반응형

'TCP/IP > 리눅스기반' 카테고리의 다른 글

UDP 에코 서버 <리눅스기반>  (0) 2009.06.30

댓글