boost :: asio服务器多进程

时间:2011-03-01 13:51:36

标签: c++ tcp boost-asio multiprocess

我想做一个简单的多进程(而不是线程)服务器。我已经看到了迭代示例,它一次处理一个请求。 相反,我需要同时处理更多请求(更多不超过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可以做类似的事情吗?我真的不知道如何获得两个不同的套接字,因为在提升所有函数(listenbindaccept等)中返回void。

1 个答案:

答案 0 :(得分:0)

是的,可以使用Boost.Asio来为每个连接分叉进程。有关bindlistenaccept到相关Boost.Asio类型的映射,请参阅BSD Socket API Boost.Asio文档。

尽管如我在评论中指出的那样,我觉得这个设计根本不会很好。您最好学习异步设计模式并使用Boost.Asio库的真正优势。有关详细信息,请参阅C10K problem