0

サーバーとクライアントの接続を確立したい。2台以上のクライアントのデータをサーバーに送信したい。サーバーは、このデータをすべて収集してデータベースに書き込む必要があります。問題は、fork()、getppid をどのように使用するかです。getpid? 待つ()?ゾンビの回避方法など

int main( void ) 
{
  pid_t client_pid;
  pid_t wait(int *status);


  Socket server, client; 
  int bytes; 

  // open server socket 
  server = tcp_passive_open( PORT ); 

  while( 1 ) {     
    client = tcp_wait_for_connection( server ); 

    //create new process
    client_pid = fork();  
    printf("%d",client_pid); 
    //client must have id 
    if(client_pid >= 0){ 
    if(client_pid > 0){        //server



    }else{                //client

        bytes = tcp_receive( client, buffer, BUFSIZE);  
            printf("received message of %d bytes: %s\n", bytes, buffer); 

        // echo msg back to client 
        char buffer[] = "Send data ....put data here"; 
            tcp_send( client, (void*)buffer, bytes); 

            //sleep(1);    /* to allow socket to drain */ 
            tcp_close( &client );

    }
     }  
  }
  tcp_close( &server ); 
  return 0; 
}

クライアントのために私はこれを書きました:

#define BUFSIZE 1024
#define SERVER_IP "127.0.0.1"
#define PORT 1234

unsigned char buffer[BUFSIZE];

int main( void ) {
  Socket client;
  int ret;
  char msg[] = "Hello there! Anyone?";

  // open TCP connection to the server; server is listening to SERVER_IP and PORT
  client = tcp_active_open( PORT, SERVER_IP );

  // send msg to server
  tcp_send( client, (void *)msg, strlen(msg)+1 );

  // get reply from server
  printf("\nanswer from server: ");
  while ( (ret = tcp_receive (client, buffer, BUFSIZE)) > 0 ) {
     printf("%s", buffer);
  }
  printf("\n");  

  // exit
  tcp_close( &client );
  return 1;
}

誰か助けてくれませんか?このプロセス、スレッドなどを操作するための優れたチュートリアルを知っていますか?

ありがとうございました!!

4

1 に答える 1