www.pudn.com > server2.rar > server2.c
#include#include #include #include #include #include #include int clientnum=0; int flag; int client1fd,client2fd; int server_sockfd,client_sockfd; int client1first=0; int client2first=0; void *client2work(void *arg) { int num; while(1) { char ch; num=recv(client_sockfd,&ch,1,0); if(num>0) { printf("ending2\n"); if(clientnum==1) { ch='0'; send(client_sockfd,&ch,1,0); } else { ch++; send(client1fd,&ch,1,0); } printf("endiang2\n"); } } } int main() { int server_len,client_len,num=0; struct sockaddr_in server_address; struct sockaddr_in client_address; unlink("server_socket"); server_sockfd = socket(AF_INET,SOCK_STREAM,0); printf(" fjjjfj%d\n",client_sockfd); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr =htonl(INADDR_ANY); server_address.sin_port = htons(1989); server_len = sizeof(server_address); bind(server_sockfd,(struct sockaddr *)&server_address,server_len); listen(server_sockfd,5); printf("server waiting \n"); pthread_t client2thread; while(1) { printf(" fjjjfj%d\n",client_sockfd); client_sockfd =accept(server_sockfd,(struct sockaddr *)&client_address, &client_len); printf(" fjjjfj%d\n",client_sockfd); if(clientnum==0) { printf(" 1111\n",client_sockfd); clientnum+=1; client1fd=client_sockfd; } else { if(clientnum==1&&client_sockfd!=client1fd) { clientnum++; client2fd=client_sockfd; } } if(client2fd==client_sockfd&&client2first==0) { client2first=1; flag= pthread_create(&client2thread,NULL,client2work,NULL) ; } printf("new customer : %d\n",client_sockfd); if(client1fd==client_sockfd&&client1first==0) { client1first=1; while(1) { char ch; num=recv(client_sockfd,&ch,1,0); if(num>0){ printf("ending\n"); ch++; if(clientnum==1) send(client_sockfd,&ch,1,0); else { ch++; send(client2fd,&ch,1,0); } printf("endiang1\n"); } } } } close(client_sockfd); }