【发布时间】:2012-06-26 21:23:14
【问题描述】:
是否有 C/C++ 方法使用 read() 从套接字读取数据,并且接收缓冲区是文件(ofstream)或类似的自扩展对象(例如向量)?
编辑:当我考虑如何读取可能接收 10000+ 字节文件内容的流套接字时,问题出现了。我只是从来不喜欢将 20000 或 50000 字节(现在足够大)作为缓冲区放在堆栈上,文件可以在其中临时存储,直到我可以插入文件。为什么不直接将其流式传输到文件中以作为星标。
就像您可以在 std:string 中获取 char* 一样,我想到了类似的东西
read( int fd, outFile.front(), std::npos ); // npos = INT_MAX
或类似的东西。
结束编辑
谢谢。
【问题讨论】:
-
是的。相当多的人编写了连接到套接字的流缓冲区。虽然它们最初看起来很酷,至少从我所看到的来看,但它们在实践中很少能很好地工作。您(几乎)需要添加某种异步操作(例如,像 ASIO 那样)才能使其正常工作。 socketstream.sourceforge.net、pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html等