简介本文向大家介绍一个C++实战项目:使用Poco C++库快速实现一个简单HTTP服务器,感兴趣的朋友可以参考一下。
#include <Poco/Net/ServerSocket.h>
#include <Poco/Net/HTTPServer.h>
#include <Poco/Net/HTTPRequestHandler.h>
#include <Poco/Net/HTTPRequestHandlerFactory.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/HttpServerRequest.h>
#include <Poco/Net/HTTPServerResponse.h>
#include <Poco/Util/ServerApplication.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
using namespace Poco::Net;
using namespace Poco::Util;
static int sg_getCount = 0;
class MyRequestHandler : public HTTPRequestHandler
{
public:
virtual void handleRequest(HTTPServerRequest &req, HTTPServerResponse &resp)
{
resp.setStatus(HTTPResponse::HTTP_OK);
resp.setContentType("text/html");
sg_getCount++;
cout << endl << "Get Count:" << sg_getCount << endl;
ostream& ostr = resp.send();
ostr << "<html><head><title>HTTP Server powered by POCO C++ Libraries</title></head>";
ostr << "<body>";
ostr << "<h1>C++实战网(www.cppszw.com)</h1>";
ostr << "</body></html>";
}
};
class MyRequestHandlerFactory : public HTTPRequestHandlerFactory
{
public:
virtual HTTPRequestHandler* createRequestHandler(const HTTPServerRequest &)
{
return new MyRequestHandler;
}
};
class MyServerApp :public ServerApplication
{
protected:
int main(const vector<string> &)
{
HTTPServerParams* pParams = new HTTPServerParams;
pParams->setMaxQueued(100);
pParams->setMaxThreads(16);
HTTPServer s(new MyRequestHandlerFactory, ServerSocket(8080), pParams);
s.start();
cout << endl << "Server started" << endl;
waitForTerminationRequest(); // wait for CTRL-C or kill
cout << endl << "Shutting down..." << endl;
s.stop();
return Application::EXIT_OK;
}
};
int main(int argc, char **argv)
{
MyServerApp app;
return app.run(argc, argv);
}
运行程序后在浏览器中打开: http://127.0.0.1:8080/ ,会返回结果如下:
本文向大家介绍一个C++实战项目:手把手教你了解并解决TCP粘包问题。通过该实战项目可以了解TCP粘包问题产生的原因及解决方式,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:Libevent网络库实现简单TCP服务端及客户端,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:C++使用Websocket++实现WebSocket客户端通信,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文介绍一个C++代码片段:C++通过HTTP下载文件,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:libcurl实现上传文件支持中文路径,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:C++多线程实现TCP服务器端同时和多个客户端通信。服务器同时可以和多个客户端建立连接,进行交互,具有一定的C++实战价值,感兴趣的朋友可以参考一下。