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

Jan*_*art 5 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));
Run Code Online (Sandbox Code Playgroud)

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

如果这不是最好的方法,那么实现这一目标的最佳方法是什么?这在一定程度上是为了减少缓存内存快照的文件 I/O。

提前致谢..

Pot*_*ter 4

您的代码(经过一些小的修复)似乎对我有用,因此您可以检查以确保您正确处理缓冲的二进制数据,即您不假设该数据std::string包含字符串。