将内存中的二进制数据读入字符串流并通过套接字传输

时间:2014-04-04 12:53:09

标签: c++ memorystream ostringstream

我想知道是否有可能在内存中获取一段数据,将其读入输出字符串流(作为二进制数据)并将其写入套接字以供客户端应用程序处理。

尝试此操作时遇到的问题如下:

示例:

char name[1024] = "Test";
std::ostringstream message (std::stringstream::out | std::stringstream::binary);

len = strlen(name);
message.write(reinterpret_cast<const char*>(&len), sizeof(int));
message.write(test, len*sizeof(char));

我想将此字符串流写入包含其中所有数据的套接字,但问题是:字符串流写入仅在第一次执行,在这种情况下写入4(字符串的长度)并且没有随后的写作。我在这里错过了什么吗?

如果这不是最好的方法,那么最好的方法是什么?这部分是为了减少缓存内存快照的文件I / O.

提前致谢..

1 个答案:

答案 0 :(得分:3)

您的代码(带有小修补程序)对我来说是work,因此您可能会检查以确保正确处理缓冲的二进制数据,即您不认为std::string包含一个字符串。