您的位置:首页 > 游戏 > 手游 > [项目][WebServer][HttpServer]详细讲解

[项目][WebServer][HttpServer]详细讲解

2024/11/19 7:08:15 来源:https://blog.csdn.net/qq_37281656/article/details/142145202  浏览:    关键词:[项目][WebServer][HttpServer]详细讲解
  • 写入出错处理
    • Send Response时,如果对方不读了,继续写入就没有意义了
    • 此时写入出现问题,系统会给进程发送SIGPIPE信号
    • HttpServer初始化时,要将SIGPIPE进行忽略
      • 如果不忽略,在向对端写入的时候,如果对端关闭链接,而Server正在写,可能直接崩溃Server
class HttpServer
{
public:HttpServer(int port = PORT): _port(port), _stop(false){}void Init(){signal(SIGPIPE, SIG_IGN);}void Loop(int threadNum = THREAD_POOL_NUM){TcpServer *tsvr = TcpServer::GetInstance(_port);LOG(INFO, "Loop Begin");while(!_stop){struct sockaddr_in peer;socklen_t len = sizeof(peer);int sock = accept(tsvr->Sock(), (struct sockaddr *)&peer, &len);if(sock < 0){continue;}LOG(INFO, "Get a new link");Task task(sock);ThreadPool::GetInstance(threadNum)->Push(task);}}private:uint16_t _port;bool _stop;
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com