我有一個客戶端,使用此功能將數據我:接收使用boost :: ASIO壓縮數據
void CServerRetrieve::Send(char *buf, DWORD size, int flags)
{
unsigned char *zlib;
unsigned long szzlib;
m_zlib.Deflate((unsigned char*)buf, size + 1, &zlib, &szzlib); // include the terminating 0 char
char zbuf[5];
zbuf[0] = 'Z';
memcpy(&zbuf[1], &szzlib, 4);
send(m_Socket, zbuf, 5, flags);
send(m_Socket, (char*)zlib, szzlib, flags);
delete [] zlib;
}
我想收到使用boost :: ASIO這個數據,但我不知道是什麼類型的緩衝區我應該傳遞給socket.async_receive
才能接收這些數據?
我試過std::vector<char>
和std::vector<std::string>
,但是在我的緩衝區中沒有收到任何數據?
有人可以幫助我,我做錯了什麼?
void tcp_connection::start()
{
socket_.async_receive(boost::asio::buffer(buff), boost::bind(&tcp_connection::handle_read, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
}
void tcp_connection::handle_read(const boost::system::error_code& err, size_t bytes_transferred)
{
if (!err || err == boost::asio::error::message_size)
{
size_t sz = buff.size(); //always 0!
}
}
我們需要更多的代碼,這個..喜歡你的插座結合一個io_service以及是否已調用io_service對象::運行或io_service對象:: run_one或不 – Arunmu 2011-02-02 10:43:25