我试图通过TCP Berkley套接字发送以块的形式分割的文件,但我得到了意想不到的行为。
std::ifstream inFile (path.c_str(),std::ios::in|std::ios::binary|std::ios::ate);
std::streampos _size;
_size = inFile.tellg();
char * _buffer = new char [MAXLINE];
int _chunk = 0;
inFile.seekg (0, std::ios::beg);
msg << "ACK" << " " << "START" << " " << message[1];
connTSock->send_message(msg.str());
while(inFile.read(_buffer , MAXLINE))
{
CLEAR_MSG(msg);
msg << "ACK" << " " << "CHUNK" << " " << _chunk << " " << _buffer;
_chunk++;
connTSock->send_message(msg.str());
}
简而言之,我收到数据丢失,客户端打开一个输出流并写入其中,但即原始文件的11 kb,另一方面只有7kb。我想问题可能与我在std :: stringstream中推送_buffer然后在std :: string中转换它有关。 我对吗?我怎么能解决这个问题?