繁体   English   中英

boost :: asio服务器多进程

[英]boost::asio server multi-process

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

是的,可以使用Boost.Asio为每个连接派生一个进程。 请参阅BSD Socket API Boost.Asio文档以获取bindlistenaccept到相关Boost.Asio类型的映射。

但是,正如我在评论中指出的那样,我认为这种设计的扩展性根本不好。 您最好学习异步设计模式并利用Boost.Asio库的真正优势。 有关更多信息,请参见C10K问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM