我正在尋找一些將套接字接收到的數據寫入文件的有效方法。 現在即時通訊這樣做:從套接字讀取並寫入文件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'調用就不需要了。 –