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);
}