使用Poco C++库快速实现一个简单HTTP服务器

2023-01-30 17:57:34 1494人已围观 46已点赞 16人已收藏

简介本文向大家介绍一个C++实战项目:使用Poco C++库快速实现一个简单HTTP服务器,感兴趣的朋友可以参考一下。

Poco C++库

  • 一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa;
  • 侧重于互联网时代的网络应用程序
  • 使用高效的,现代的标准ANSI/ISO C++,并基于STL
  • 高可移值性,并可在多个平台下可用
  • 开源,并使用Boost Software License发布
  • 不管是否商用,都完全免费。

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++实现HTTP服务器,网络编程,Poco C++库

源码下载
  • 最近更新:   2022-06-22开发环境:   Visual Studio 2015
  • 源码大小:   2.80MB下载次数:  8 

更多为你推荐