标签: poco-libraries

Poco C++中有哪些lib文件

我刚开始在C++中使用Poco,这是我不熟悉的慵懒.我似乎编译好了一切,但我不知道要包含哪些lib文件.我正在Eclipse CDT使用MingGW编译器(我甚至可以使用Poco吗?).当我查看Poco文件的lib目录时,我看到了这种情况:

PocoFoundationmd (Object file library)
PocoFoundationmdd (VC++ minimum rebuild de...)
PocoFoundationmdd (Object File Library)
pocoFoundationmdd (Program debug database)
PocoFoundationmt (Object file library)
PocoFoundationmtd (VC++ minimum rebuild de...)
PocoFoundationmtd (Object File Library)
pocoFoundationmtd (Program debug database)
Run Code Online (Sandbox Code Playgroud)

它为库的每个部分重复了相同的类型(我放在它们旁边的东西)(Foundation,Net,Util ......)

c++ poco-libraries

2
推荐指数
1
解决办法
2301
查看次数

Poco使用错误的时区

我目前正在使用一些c ++代码中的Poco Logger库.它在美国的服务器上运行,但即使系统时间存在正确的时区,日志文件也会将时间戳打印为GMT.

这是一个可配置的Poco设置,还是我需要找到的系统设置?我似乎无法在任何地方找到答案!

下面可能有用的输出.

日志文件示例:2013-04-03 11:49:32.862 GMT[31015]:Debug:...
日志文件格式字符串:pattern = "%Y-%m-%d %H:%M:%S.%i %Z[%P]:%p:%t"

输出来自/etc/sysconfig/clock:

ZONE="America/Los_Angeles"
UTC=true
ARC=false
Run Code Online (Sandbox Code Playgroud)

输出自date:Wed Apr 3 04:57:44 PDT 2013
输出echo $TZ:America/Los_Angeles

任何想法非常感谢!

timezone poco-libraries

2
推荐指数
1
解决办法
1456
查看次数

使用字符串或流解析之间的区别(Poco c ++)

我编写了一个简单的分层json-parser,使用POCO JSON,用作sax解析器.如果我使用字符串或流作为解析方法的输入,请参阅下面的调用,或者是不同的构造函数等效,它们在结果中是否存在差异?

Parser parser;
DefaultHandler handler;
parser.setHandler(&handler);
parser.parse(input);
Run Code Online (Sandbox Code Playgroud)

在内存消耗,速度等方面?

json saxparser poco-libraries

2
推荐指数
1
解决办法
3780
查看次数

Poco :: Base64Decoder流未返回完整的字符串

不知道我是否使用错了,因为这不是我真正的专业领域,但是我给我的印象是,这应该给我一个完整的解码的openframeworks缓冲区(或者一个简单的字符串,我尝试了各种方法也都得到了相同的结果)短字符串):

string str; // string is a line from a file handle and shows to be ok in the debugger
istringstream istr(str);
Poco::Base64Decoder b64in(istr);
ofBuffer buffer;
b64in >> buffer;
Run Code Online (Sandbox Code Playgroud)

现在我正在解码的示例base64字符串是这一行:

I2J1bmRsZQAAAAAAAAAAAQAAABwvT1NDL1NwYWNlSW50ZW5zaXR5ACxmAAA6nUlSAAAAFC9PU0MvU3BlZWQAACxmAAA90/fPAAAAGC9PU0MvU21vb3RobmVzcwAsZgAAP2Wu5gAAABQvT1NDL1JlYWNoAAAsZgAAPnxQSAAAABgvT1NDL0RlbnNpdHkAAAAALGYAAAAAAAAAAAAYL09TQy9Db2hlcmVuY2UAACxmAAA+tYEGAAAAIC9PU0MvVHJhdmVsSW50ZW5zaXR5AAAAACxmAAA8eQlsAAAAFC9PU0MvUmh5dGhtACxmAAA+6LQ5AAAAGC9PU0MvSGFybW9ueQAAAAAsZgAAPui0OQAAABQvT1NDL0VuZXJneQAsZgAAPYznBA==
Run Code Online (Sandbox Code Playgroud)

该行无法解析为简单的ascii文本,而是由某些vvvv修补程序在base64中转储的原始osc数据包,我无法访问...所以我想这也可能是编码问题?

而且我得到的所有输出,无论我使用流式复印机还是像上面的运算符,都只是“ #bundle”。这可能与“ #bundle”之后的/字符或其他非标准内容有关吗?我的印象是,Base64Decoder不在乎空白或在解码数据中找到的任何内容。

c++ base64 poco poco-libraries

2
推荐指数
1
解决办法
2726
查看次数

如何通过POCO创建带有某些参数的HTTP请求?

我是POCO的新用户,可以在HTTP :: Request之后获得HTTP响应.

顺便说一句,如何使用一些参数创建HTTP请求?例如,我想设置URI,http://xxxx/index.html?name = hoge&id = fuga&data = foo.

当然我知道如果我直接设置这个uri是可能的.但我想在下面实现这一点.有谁知道这种方式?

URI uri("http://xxx/index.html");
uri.setParam("name", "hoge");
uri.setParam("id", "fuga");
uri.setParam("data", "foo");
Run Code Online (Sandbox Code Playgroud)

c++ http-get poco-libraries

2
推荐指数
1
解决办法
1747
查看次数

使用mingw32-make进行目录更改错误

我正在MinGW32下构建POCO库1.6.0,环境:Windows 7 Ultimate 32位,shell:MSYS.成功执行./configure.

$ ./configure
Configured for MinGW
Run Code Online (Sandbox Code Playgroud)

config.make的内容:

POCO_CONFIG = MinGW
POCO_BASE = /c/dev/poco
POCO_BUILD = /c/dev/poco
POCO_PREFIX = /usr/local
POCO_FLAGS = 
OMIT = 
export POCO_CONFIG
export POCO_BASE
export POCO_BUILD
export POCO_PREFIX
export POCO_FLAGS
Run Code Online (Sandbox Code Playgroud)

启动mingw32-make之后我得到了:

$ mingw32-make --debug -w
GNU Make 3.82
Built for i386-pc-mingw32
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO …
Run Code Online (Sandbox Code Playgroud)

mingw makefile mingw32 poco-libraries

2
推荐指数
1
解决办法
1045
查看次数

为什么std :: condition_variable :: notify_one阻塞?

由于某种原因,调用signal.notify_one()会阻止当前线程并且不会返回.我从来没有听说过这种行为,我不知道如何解决它.

{
  std::lock_guard<std::mutex> lock(_mutex);
  _exit = true; // _exit is a std::atomic<bool> 
}

std::cout << "before" << std::endl;
_signal.notify_one();
std::cout << "after" << std::endl;

_thread.join();
Run Code Online (Sandbox Code Playgroud)

我正在使用Microsoft Visual C++ 2015,并且在销毁期间调用上面的代码.

我希望你能指出我正确的方向,非常感谢你的帮助!

c++ multithreading condition-variable poco-libraries visual-studio-2015

2
推荐指数
1
解决办法
797
查看次数

Poco HTTPClientSession将标头添加到HTTPRequest

尝试使用JSON将POST方法发送到服务器。但是,服务器也需要model, platform and platform version作为标头来请求。如何将这些标头添加到HTTPRequest。在邮递员处,我可以将其添加到“标题”选项卡中。例如。Model: Redmi 4 Platform: android。随时进行编辑以使其他人清楚。下面是我的代码HTTPRequest创建者:

Poco::JSON::Object obj;
obj.set("login", "log123");

obj.set("password","pas123");

Poco::Net::HTTPClientSession session("http://hostAddress", 
    80); //giving host name and port number
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST,
        "http://requestAddress","1.1"); //initializing request body
Poco::Net::HTTPResponse response;


std::stringstream ss;
obj.stringify(ss);

request.setContentType("application/json");
request.setContentLength(ss.str().length());

std::ostream& oStream = session.sendRequest(request);// sends request, returns open stream

obj.stringify(oStream);

std::istream& iStream = session.receiveResponse(response);
Run Code Online (Sandbox Code Playgroud)

我试图在https://pocoproject.org/docs/Poco.Net.HTTPRequest.html上找到一些信息。https://pocoproject.org/docs/Poco.Net.HTTPMessage.html。但是没有结果。

c++ json http poco-libraries

2
推荐指数
1
解决办法
1584
查看次数

即使主机解析,poco httpclientsession 也会给主机未找到错误

我对 poco 有一个奇怪的问题。我可以很好地构建它,并将其链接到测试应用程序。但是,当我下载一个 url 时,无论我使用什么 url,它都会报告 HostNotFound 异常。该文件可以在任何地方的隐身浏览器中访问,并且可以在 dns 中解析......我对解决这个问题感到有些茫然......有什么想法吗?

// 机器上的 dns 显示错误 nslookup s3.amazonaws.com 服务器:未知地址:192.168.0.1

非权威回答:名称:s3-1.amazonaws.com 地址:72.21.215.196 别名:s3.amazonaws.com s3.a-geo.amazonaws.com

    // calling helper
CString host("http://s3.amazonaws.com");
CString path("/mybucket.mycompany.com/myfile.txt");
CString errmsg;
CString data = GetURL(host,path,errmsg);

    // poco helper code
 CString  GetURL(CString host, CString path_query, CString &debmsg)
{

    debmsg = CString("");
    try 
    {
        // convert request
        std::string tmphost((LPCTSTR)host);
        std::string tmppath((LPCTSTR)path_query);
        // creation session and request
        HTTPClientSession session(tmphost,80);
        // disable proxy
        session.setProxyHost("");
        HTTPRequest req(HTTPRequest::HTTP_GET,tmppath,HTTPMessage::HTTP_1_1);

        // send request
        session.sendRequest(req);
        // get response
        HTTPResponse res; …
Run Code Online (Sandbox Code Playgroud)

visual-c++ poco-libraries

1
推荐指数
1
解决办法
1422
查看次数

"包装"异常是一个好主意吗?

我正在编写一个与POCO C++库动态链接的C++库.我广泛使用POCO来做几件事,比如套接字,文件处理,日志记录等.所以,我需要处理POCO可以抛出的异常.

除了与POCO相关的异常之外,我的代码可以抛出其他异常,原因有几个(基本上是RunTime异常).POCO C++实际上包含一个RunTimeException类.所以,我可以使用它.

我的问题是:我是否应该依赖POCO异常,并允许使用我的库的第三方直接捕获它们?另一种选择是创建我自己的异常集,包装POCO异常,并公开它们.这样,如果我决定将来摆脱POCO,我不需要改变那部分.只是我的包装异常.

还有其他没有明显的理由用我自己的POCO例外包装所有的POCO例外吗?

提前谢谢了.

c++ exception-handling wrapper poco-libraries

1
推荐指数
1
解决办法
423
查看次数

即使设置了keepAlive,POCO请求超时

我正在使用一个简单的Get请求来从服务器获取通知.我希望请求持续到服务器收到响应(可能是1到9个小时).但我面临2分钟内请求超时的问题.我将会话和请求都设置为"keepalive".但它没有帮助.我也尝试过使用setKeepAliveTimeout并给它一个很大的值.但这也没有改变任何东西.以下是我使用的代码:

try{
        //Prepare request
        Poco::URI uri(url);
        const Poco::Net::Context::Ptr context = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "", Poco::Net::Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
        Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context);
        session.setKeepAlive(true);

        // prepare path
        std::string path(uri.getPathAndQuery());
        if (path.empty())
        {
            path = "/";
        }

        // send request
        Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, path, Poco::Net::HTTPMessage::HTTP_1_1);
      req.setKeepAlive(true);
        session.sendRequest(req);

        // Get response
        Poco::Net::HTTPResponse res;

        //Get status code
     statusCode = res.getStatus());
        //Get status
        status = res.getReason();

        //Get body
        std::istream &inStream = session.receiveResponse(res);
        std::ostringstream outStringStream;
        outStringStream << inStream.rdbuf();
        response = outStringStream.str();
    }
    catch(Poco::Exception& exception)
    {
       cout<<exception.displayText(); …
Run Code Online (Sandbox Code Playgroud)

httprequest session-timeout poco-libraries

1
推荐指数
2
解决办法
3699
查看次数

通过poco流套接字发送文件

我必须要说的第一件事是,这篇文章的灵感来自[Remy Lebeau] [1] /sf/users/4610441/的回答,这里的问题是:

通过TCP / IP连接发送二进制文件

我正在使用poco库和C ++。

消息头

目的是通过互联网发送一些大的二进制文件。因此,为了完成此操作,我使用以下消息头:

class FileDesc
{
  size_t file_size = 0;
  size_t chunk_size = 0;
  size_t file_name_len = 0;
  char file_name[0];

public:

  FileDesc(size_t file_sz, size_t buf_sz) 
    : file_size(ByteOrder::toNetwork(file_sz)), 
      chunk_size(ByteOrder::toNetwork(buf_sz)) {}

  size_t get_file_size() const { return ByteOrder::fromNetwork(file_size); }

  size_t get_chunk_size() const { return ByteOrder::fromNetwork(chunk_size); }

  string get_file_name() const 
  {
    const auto len = get_file_name_len();
    string ret; ret.reserve(len + 1);
    for (size_t i = 0; i < len; ++i)
      ret.push_back(file_name[i]);
    return ret;
  } …
Run Code Online (Sandbox Code Playgroud)

c++ sockets tcp poco-libraries

0
推荐指数
1
解决办法
2701
查看次数