Я хотел бы сделать простой многопроцессорный (не потоковый) сервер. Я видел итерационный пример, в котором он обрабатывает один запрос за раз.
Вместо этого мне нужно обрабатывать больше запросов (больше на 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
}
Можно ли сделать что-то подобное с бустом? Я действительно не знаю, как получить два разных сокета, потому что в boost все функции (listen
, bind
, accept
и т. Д.) Возвращают void.