我已经使用Boost C++库很长一段时间了.我非常喜欢用于网络编程的Boost Asio C++库.然而,我被介绍到另外两个库:POCO和自适应通信环境(ACE)框架.我想知道每个人的好坏.
任何人都可以告诉我Poco C++ JSON的工作原理吗?
以前我用过JsonReader和JsonToken.Poco C++库似乎没有相应的对象.
例如,我如何使用json解析器创建一个包含标记名称的JSON值的对象名称?
我在ACE,Boost和wxWidgets方面拥有丰富的经验.我最近找到了POCO库.有没有人对它们有任何经验,以及它们在性能和可靠性方面与ACE,Boost和wxWidgets相比如何?
我特别感兴趣用POCO取代ACE.我无法让ACE使用带有x64目标的VS2008进行编译.我主要使用ACE_Task,所以我认为我可以用Poco的线程和消息队列替换它们.
我感兴趣的POCO的其他部分是HTTPServer,HTTPClient和LayeredConfiguration.这些库与Boost和wxWidgets中的库类似,但我尝试将wxWidgets的使用限制为GUI组件,而类似的Boost库则很难.
我对任何人可以分享关于POCO的任何经验感兴趣,无论好坏.
根据POCO助手的规格:
通过调用Poco :: Crypto :: OpenSSLInitializer :: initialize()初始化NetSSL库以及底层的OpenSSL库.应该在使用NetSSL库中的任何类之前调用.在创建Context或SSLManager实例时,将通过Poco :: Crypto :: OpenSSLInitializer实例或类似机制自动初始化NetSSL.但是,建议在应用程序启动时调用initializeSSL().
当我想使用时HTTPSClientSession,我是否必须首先构造一个Application对象?我如何在客户端中使用它?有人能告诉我吗?非常感谢你!
我想写一个简单的多人游戏作为我的C++学习项目的一部分.
所以我想,既然我在这里,我想做得恰到好处,而不是仅仅完成它.
如果我理解正确:Apache使用每个连接的线程架构,而nginx使用事件循环,然后为传入连接专用一个worker [x].我想nginx更明智,因为它支持更高的并发级别.对?
我也遇到过这个聪明的比喻,但我不确定它是否适用于我的情况.这个比喻似乎也很理想主义.我很少看到我的电脑以100%的CPU运行(即使打开了一个不常见的Chrome标签,Photoshop也没有同时运行)
此外,我遇到了一个SO帖子(不知何故,它从我的历史中消失了)用户询问他们应该使用多少线程,其中一个答案是拥有大约700个,甚至多达10,000个线程是完全可以接受的.不过,这个问题与JVM有关.
所以,让我们估计一个虚拟的用户群,大约有5000个用户.哪种方法应该是"最并发"的方法?
我承认选项2听起来对我来说是最好的解决方案,但我在所有这些方面都非常环保,所以我可能有点天真并且缺少一些明显的缺陷.而且,听起来它可能相当难以实现.
PS:我正在考虑使用POCO C++库.建议任何替代库(如boost)都可以.然而,许多人说POCO的图书馆非常干净且易于理解.所以,我最好使用一个,这样我就可以了解如何我使用的是什么样的秒.
如何正确执行POST到HTTPS服务器并正确嵌入登录数据.下面的代码不会返回任何cookie(在Wininet中它会).我想知道POCO HTTP库如何处理HTTP重定向?
MyApp()
{
try
{
const Poco::URI uri( "https://localhost.com" );
const Poco::Net::Context::Ptr context( new Poco::Net::Context( Poco::Net::Context::CLIENT_USE, "", "", "rootcert.pem" ) );
Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context );
Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_POST, "/login.php" );
req.setContentType("Content-Type: application/x-www-form-urlencoded\r\n");
req.setKeepAlive(true);
std::string reqBody("username=???&password=???&action_login=Log+In\r\n\r\n");
req.setContentLength( reqBody.length() );
//Poco::Net::HTTPBasicCredentials cred("???", "???");
//cred.authenticate(req);
session.sendRequest(req) << reqBody;
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::string resp;
std::vector<Poco::Net::HTTPCookie> cookies;
res.getCookies( cookies );
}
catch( const Poco::Net::SSLException& e )
{
std::cerr << e.what() << ": " << e.message() << std::endl;
}
catch( const std::exception& …Run Code Online (Sandbox Code Playgroud) 我在使用Poco库时遇到了麻烦.我需要一个简单的解决方案来使编译更容易.pkg-configPoco库是否有任何文件可用于我们的make文件?或任何替代解决方案?
目前我使用的是Ubuntu GNU/Linux.
我正在尝试在我的应用程序中使用poco库,但我不知道如何将Poco库链接到它.实际上我不知道应该将多少个库链接到应用程序.我想知道是否有一种简单的方法可以做到,例如使用pkg-config文件,就像我们一样gtkmm,例如:
g++ prog.cc `pkg-config --gtkmm-2.4 --libs --cflags` -o prog
Run Code Online (Sandbox Code Playgroud)
并且pkg-config程序将适当的libs和头文件附加到我们的命令中.
我用C++编程已经有一段时间了,现在我正在努力使用这个Poco库,我正在尝试添加一些HTTP请求.
首先,我在哪里可以添加poco文件?
其次,我已经阅读了一些关于命令提示符并运行将编译文件的脚本,但我必须给它一个参数,这是我的visual studio版本,选择是从70到110.我怎么知道我应该找到哪一个使用?
如果有人能为我提供一步一步的指导,我真的很感激.
谢谢.
我正在开始一个新项目,同时刚刚发现了Poco图书馆,我发现它非常棒.但是我有点迷失,因为例子并不多.
我有一个ServerApplication-> TCPServer-> ServerSocket + TCPServerConnectionFactory-> TCPServerconnection方法,如例子所示.我按照指示从PocoNet类继承.现在我可以将我的服务器作为服务运行,并接收传入的连接.
我想采用以下事件处理方法:在每个连接(或每个客户端)的基础上,处理事件,例如可在客户端套接字上读取的数据,客户端套接字上发生的错误(断开连接或超时),发送客户端套接字上没有错误的数据
我该怎么做呢?Poco/Foundation/Events是我正在寻找的,还是在Poco :: Net中实现了一些机制?
我已经看过Poco :: Net :: NetExpections但是当netcat连接关闭时,它们似乎不会被我的TCPServerConnection派生类抛出.
c++ ×10
poco-libraries ×10
ace ×2
boost ×2
https ×2
http ×1
json ×1
linux ×1
networking ×1
openssl ×1
post ×1
ubuntu-9.10 ×1