Poco FIFOBuffer read()错误

时间:2015-06-21 01:10:01

标签: c++ sockets poco-libraries

我无法让Poco :: FIFOBuffer.read()工作。获取访问冲突错误或堆栈变量结果都已损坏。

    std::string output;

    Poco::FIFOBuffer recvData(BUFFERLEN);

    int iResult = mySockets[vect[2]]->receiveBytes(recvData);
    char* result = "";

    std::cout << recvData.read(result, recvData.size());
    output = result;
程序中的一个非常相似的东西似乎工作正常(vect是一个向量)mySockets是一个Map

Poco::FIFOBuffer sendData(BUFFERLEN, false);
sendData.copy(vect[3].c_str(), vect[3].size());
int iResult = mySockets[vect[2]]->sendBytes(sendData);
output = "data sent, sendBytes returned: " + std::to_string(iResult);

参考:http://pocoproject.org/docs-1.5.0/Poco.BasicFIFOBuffer.html#11400

1 个答案:

答案 0 :(得分:1)

如上述评论中所述,文档为wrong

如果要自动调整缓冲区的大小,请使用Poco::Buffer<char>;或者,确保char*指向足够的空间来容纳数据(这很棘手 - 你必须查询FIFOBuffer以找出receiveBytes()调用返回多少,所以使用{{ 1}}是一个更容易的选择。)