単純なマルチプロセス(スレッドではない)サーバーを作成します。一度に1つのリクエストを処理する反復的な例を見てきました。代わりに、より多くのリクエスト(10未満でより多く)を同時に処理する必要があります。従来のcおよびc++の例では、サーバーが次のように設計されていることがわかりました。
int listensd, connsd; // listening socket and conection socket
pid_t pid; //process id
listensd=socket(....);
bind(listensd,...);
listen(listensd,...);
for(;;)
{
connsd=accept(listensd,...);
if((pid=fork())==0) //child process
{
close(listensd); //close the listen socket
do_it(connsd); //serve the request
close(connsd); //close the connection socket
exit(0);
}
close(connsd); //the parent closes the connection socket
}
ブーストでそのようなことをすることは可能ですか?listen
ブーストではすべての関数( 、、、bind
などaccept
)がvoidを返すため、2つの異なるソケットを取得する方法が本当にわかりません。