サーバーとクライアントの接続を確立したい。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;
}
誰か助けてくれませんか?このプロセス、スレッドなどを操作するための優れたチュートリアルを知っていますか?
ありがとうございました!!