반응형
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<time.h>
#define BUFSIZE 1024
void error_handling(char* meg);
int main(int argc,char** argv)
{
int ssock;
char meg[BUFSIZE];
int strl;
struct sockaddr_in saddr;
struct sockaddr_in caddr;
int caddrl;
time_t logint;
struct tm* t;
char* str;
if(argc!=2)
{
printf("Usage : %s <port>\n",argv[0]);
exit(1);
}
ssock=socket(PF_INET,SOCK_DGRAM,0);
if(ssock==-1)
error_handling("socket() error");
memset(&saddr,0,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=htons(atoi(argv[1]));
if(bind(ssock,(struct sockaddr*)&saddr,sizeof(saddr))==-1)
error_handling("bind() error");
while(1)
{
caddrl=sizeof(caddr);
strl=recvfrom(ssock,meg,BUFSIZE,0,(struct sockaddr*)&caddr,&caddrl);
sendto(ssock,meg,strl,0,(struct sockaddr*)&caddr,sizeof(caddr));
logint=time(NULL);
t=localtime(&logint);
str=inet_ntoa(caddr.sin_addr);
printf("Client Address : %s\n",str);
printf("Login time : %2d:%02d:%02d\n",t->tm_hour,t->tm_min,t->tm_sec);
}
close(ssock);
return 0;
}
void error_handling(char* meg)
{
fputs(meg,stderr);
fputc('\n',stderr);
exit(1);
}
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<time.h>
#define BUFSIZE 1024
void error_handling(char* meg);
int main(int argc,char** argv)
{
int ssock;
char meg[BUFSIZE];
int strl;
struct sockaddr_in saddr;
struct sockaddr_in caddr;
int caddrl;
time_t logint;
struct tm* t;
char* str;
if(argc!=2)
{
printf("Usage : %s <port>\n",argv[0]);
exit(1);
}
ssock=socket(PF_INET,SOCK_DGRAM,0);
if(ssock==-1)
error_handling("socket() error");
memset(&saddr,0,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=htons(atoi(argv[1]));
if(bind(ssock,(struct sockaddr*)&saddr,sizeof(saddr))==-1)
error_handling("bind() error");
while(1)
{
caddrl=sizeof(caddr);
strl=recvfrom(ssock,meg,BUFSIZE,0,(struct sockaddr*)&caddr,&caddrl);
sendto(ssock,meg,strl,0,(struct sockaddr*)&caddr,sizeof(caddr));
logint=time(NULL);
t=localtime(&logint);
str=inet_ntoa(caddr.sin_addr);
printf("Client Address : %s\n",str);
printf("Login time : %2d:%02d:%02d\n",t->tm_hour,t->tm_min,t->tm_sec);
}
close(ssock);
return 0;
}
void error_handling(char* meg)
{
fputs(meg,stderr);
fputc('\n',stderr);
exit(1);
}
반응형
'TCP/IP > 리눅스기반' 카테고리의 다른 글
UDP 에코 클라이언트<리눅스기반> (0) | 2009.06.30 |
---|
댓글