我正在寻找一些将套接字接收到的数据写入文件的有效方法。 现在即时通讯这样做:从套接字读取并写入文件C++
if (!fStream.is_open()){
cerr << "Unable to open file stream.\n";
exit(EXIT_FAILURE);
}
char* recBuffer = new char [MAX_SIZE];
bzero(recBuffer, MAX_SIZE);
ssize_t recieved;
while ((recieved=read(s, recBuffer, MAX_SIZE))>0){
fStream.write(recBuffer,MAX_SIZE);
bzero(recBuffer, MAX_SIZE);
}
问题这个实现的是......可以说,IM recieving文本文件,当我写收到数据转换成文件,文件中包含从内存的其余部分收到数据+空值。如果我只写收到计数,我只看到文件中的NULL。
PS的boost ::短耳是不是一个答案,我:(。
感谢
你知道流缓存吗?如果缓冲区没有被刷新,实际上没有写入文件。您可能想在每次写入之后刷新缓冲区以进行测试。如果你记得只写“接收”字节,那么'bzero'调用就不需要了。 –