我試圖創建波科::淨多個HTTP服務器和Boost庫,但在內部出現以下錯誤波科文件Application.cpp:多個HTTP服務器與波索和Boost C++
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Assertion violation: _pInstance == 0 [in file "src/Application.cpp", line 115]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我使用代碼如下:
#include <Poco/Net/HTMLForm.h>
#include <Poco/Net/HTTPServerRequest.h>
#include <Poco/Net/HTTPServerResponse.h>
#include <boost/asio/io_service.hpp>
boost::asio::io_service service(100);
class RequestHandler : public Poco::Net::HTTPRequestHandler {
public:
RequestHandler(){}
void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response){}
};
class RequestHandlerFactory : public Poco::Net::HTTPRequestHandlerFactory {
public:
RequestHandlerFactory(){}
Poco::Net::HTTPRequestHandler* createRequestHandler(const Poco::Net::HTTPServerRequest& request)
{
return new RequestHandler();
}
};
class HttpServer :
public Poco::Util::ServerApplication,
public boost::enable_shared_from_this<HttpServer>{
Poco::Net::ServerSocket svs;
Poco::Net::HTTPServer srv;
public:
HttpServer(std::string address_, Poco::UInt16 port_):
svs(Poco::Net::SocketAddress(address_.empty() ? "127.0.0.1" : address_, port_)),
srv(new RequestHandlerFactory(), svs, new Poco::Net::HTTPServerParams)
{
svs.setReuseAddress(true);
svs.setReusePort(true);
}
virtual ~HttpServer(){}
void start()
{
service.post(
boost::bind(&HttpServer::exec, shared_from_this()));
}
void stop()
{
srv.stop();
}
private:
void exec()
{
srv.start();
waitForTerminationRequest();
srv.stop();
}
};
這是服務器的主代碼和Im創建在例如主功能的服務器。 的service.post呼叫,爲方法EXEC的異步調用和服務的結構(100)指大小的線程池100
服務器創建爲如下:
boost::shared_ptr<HttpServer> server(
new HttpServer("", 8080));
boost::shared_ptr<HttpServer> server2(
new HttpServer("", 8181));
server->start();
server2->start(); // Error occurs here
第二臺服務器啓動時顯示錯誤。
林實例化沒有問題: 的boost :: shared_ptr的服務器(新的HttpServer( 「127.0.0.1」,8080)); 實例化和鎖定不是問題= /,謝謝。 –
lopes
2015-02-09 13:33:29
@lopes我不懷疑你的確如此。但是,您不顯示該代碼。所以這是首先要檢查的。 (請將它添加到問題而不是在評論中) – sehe 2015-02-09 13:34:54
@lopes我已經做了一些簡單的測試,並更新了我的答案。 – sehe 2015-02-09 15:13:37