簡體   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