#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 |
---|
댓글