0
我是Boost asio新手。我有一個tcp服務器客戶端對程序正在運行,但是當我運行一個新客戶端時,該客戶端也會讀取所有舊的寫入。我正在讀/寫async_read/async_write。所以服務器和客戶端可能已經運行了一段時間並且來回發送了100個數據包。當我打開第二個客戶端並收到它時,我收到所有100箇舊的服務器發送的數據包! 「localhost」用於ip_address。C++ boost asio tcp socket讀取舊數據
有什麼方法可以清除緩衝區或什麼?也許除了關閉舊的套接字並創建一個新的套接字之外,還有另一種方法嗎?
讀/寫調用(順序不使用,只是複製無論是從那裏我用他們的呼叫):
boost::array<char, 1024> buf;
boost::array<char, 1024> rbuf;
boost::asio::async_write(socket_,
boost::asio::buffer(buf.c_array(),
buf.size()),strand_.wrap(boost::bind(&async_tcp_client::handle_send_msg,
this,boost::asio::placeholders::error)));
boost::asio::async_read(socket_, boost::asio::buffer(rbuf.c_array(), rbuf.size()),
strand_.wrap(boost::bind(&async_tcp_client::handle_read,
this, boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred)));
你說的沒道理。 TCP/IP是基於連接的協議,因此在一個連接上發送的數據不應該出現在另一個連接上。服務器是否有可能將數據複製到所有客戶端?客戶是否有不同的流程? – Lou 2011-04-20 15:27:43
此外,還需要更多代碼。 – Lou 2011-04-20 15:28:53