本文整理汇总了C++中socket_type::timeout方法的典型用法代码示例。如果您正苦于以下问题:C++ socket_type::timeout方法的具体用法?C++ socket_type::timeout怎么用?C++ socket_type::timeout使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类socket_type
的用法示例。
在下文中一共展示了socket_type::timeout方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: process
void run_server::process(socket_type ssock,
pfi::lang::shared_ptr<cgi> cc)
{
for (;;){
pfi::lang::shared_ptr<stream_socket> sock(ssock->accept());
if (!sock) continue;
if (ssock->timeout()>0 && !sock->set_timeout(ssock->timeout()))
continue;
try{
http::request req(sock);
stringstream sout;
map<string, string> env;
for (http::header::iterator p=req.head().begin();
p!=req.head().end(); p++)
env["HTTP_"+str_to_upper(p->first)]=p->second;
env["REQUEST_METHOD"]=req.method();
env["REQUEST_URI"]=req.path().path();
if (req.path().query()!="")
env["REQUEST_URI"]+="?"+req.path().query();
env["SCRIPT_NAME"]=req.path().path();
env["QUERY_STRING"]=req.path().query();
env["REMOTE_ADDR"]=sock->remote_addr().to_string();
env["REMOTE_PORT"]=lexical_cast<string>(sock->remote_port());
env["SERVER_PORT"]=lexical_cast<string>(ssock->port());
env["SERVER_NAME"]="localhost";
env["SERVER_PROTOCOL"]="HTTP/1.1";
env["SERVER_SIGNATURE"]="pficommon/" PFICOMMON_VERSION " standalone web server";
env["SERVER_SOFTWARE"]="pficommon/" PFICOMMON_VERSION;
env["CONTENT_LENGTH"]=req.head()["Content-Length"];
env["CONTENT_TYPE"]=req.head()["Content-Type"];
cc->exec(req.body(), sout, cerr, env);
pfi::lang::shared_ptr<http::response> resp=gen_resp(sout);
resp->send(sock);
}
catch(exception&){
}
}
}