我无法让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
答案 0 :(得分:1)
如上述评论中所述,文档为wrong。
如果要自动调整缓冲区的大小,请使用Poco::Buffer<char>
;或者,确保char*
指向足够的空间来容纳数据(这很棘手 - 你必须查询FIFOBuffer以找出receiveBytes()
调用返回多少,所以使用{{ 1}}是一个更容易的选择。)