分类: LINUX
2007-01-12 16:27:34
/********************************************** 作者:猪头流氓 时间:Sun Jan 7 02:46:39 2007 文件名:server.c 描述: **********************************************/ #include #include #include #include #include #include #include #include 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)); } |
/********************************************** perror("Create socket faild!\n"); perror("Connect faild!\n"); close(sockfd); } |
wqwi2012-02-10 11:39:36
please man listen
The backlog parameter defines the maximum length the queue of pending connections may grow to. If a connection
request arrives with the queue full the client may receive an error with an indication of ECONNREFUSED or, if
the underlying protocol supports retransmission, the request may be ignored so that retries succeed.
NOTES
&nbs