/********************************************** 作者:猪头流氓 时间:Sun Jan 7 02:46:39 2007 文件名:server.c 描述: **********************************************/ #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <time.h> #include <unistd.h> #include <arpa/inet.h> #include <string.h> int sendtime(int fd); void print_date(); int main() { int sockfd; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int newfd; char buf[10]; int sockaddr_len; int rt; if((sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) <= 0) { perror("Create socket faild!/n"); return -1; } bzero(&my_addr, sizeof(struct sockaddr)); my_addr.sin_family = PF_INET; my_addr.sin_port = htons(5555); my_addr.sin_addr.s_addr = inet_addr("192.168.0.2"); if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) < 0) { perror("Bind faild!/n"); return -2; } if(listen(sockfd,1) < 0) { perror("Listen error!"); } sockaddr_len = sizeof(struct sockaddr); while(1) { newfd = accept(sockfd,(struct sockaddr *)&their_addr, (socklen_t *)&sockaddr_len); printf("Accept:%s,at ",inet_ntoa(their_addr.sin_addr)); print_date(); if(newfd < 0) { perror("Accept error!/n"); return -3; } /* if(fork() == 0) { printf("Fork() sucessed/n"); close(sockfd); sendtime(newfd); close(newfd); return 0; } */ if((rt = read(newfd, buf, 7)) != 7) { perror("Get date error/n"); continue; } if(!strcmp(buf,"getdate")) { sendtime(newfd); } else { printf("Wrong commands/n"); } close(newfd); } return 0; } int sendtime(int fd) { time_t tm; int rt; tm=time(NULL); rt=write(fd, &tm, sizeof(time_t)); if(rt == sizeof(time_t)) { printf("Send sucessed!/n"); } else { printf("Send error!/n"); } return 0; } void print_date() { time_t tm; time(&tm); printf("%s", ctime(&tm)); } |
/********************************************** } |