服务器代码:
//server.c #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<string.h> #include<netinet/in.h> #include<errno.h> #include<sys/wait.h> #define MAX 5000 #define LISTENQ 1024 int main(int argc,char *argv[]) { int sockfd,cliefd; pid_t childpid; struct sockaddr_in servaddr,cliaddr; char cli[MAX],ser[MAX]; if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) { printf("socket error "); exit(0); } bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(8080); servaddr.sin_addr.s_addr=htonl(INADDR_ANY); int opt = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) != 0) { perror("Server setsockopt failed"); return 1; } if((bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)))<0) { printf("bind error:%s ",strerror(errno)); exit(0); } listen(sockfd,LISTENQ); while(1) { printf("waiting for connecting. "); if((cliefd=accept(sockfd,(struct sockaddr*)NULL,NULL))<0) { printf("connect faild "); exit(1); } else { printf("connect success "); } printf("welcome to chatting rome!! "); if((childpid=fork())==0) { close(sockfd); while(1) { int m; recv(cliefd,cli,500,0); m=strlen(cli); cli[m]='