正确使用std :: string通过套接字发送二进制数据

时间:2015-07-21 13:50:44

标签: c++ sockets c++11 network-programming

我试图通过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中转换它有关。 我对吗?我怎么能解决这个问题?

0 个答案:

没有答案