1
我有一個提升的異步tcp客戶端,需要從服務器接收數據的所有時間。 我想讓那裏有一段時間,當不提供n秒的數據從服務器斷開連接並嘗試連接時。 我使用vC++。TCP數據記錄超時不適用於我
void tcpclient::Connect(){
.....
socket_.async_connect(*iterator,boost::bind(&tcpclient::AfterConnection,shared_from_this(),boost::asio::placeholders::error));
}
void tcpclient::AfterConnection(const boost::system::error_code& error){
if (!error)
{
SetTimeout();
}
}
void tcpclient::SetTimeout(int sec = 1)
{
SOCKET native_sock = socket_.native();
int result = SOCKET_ERROR;
if (INVALID_SOCKET != native_sock)
{
struct timeval tv;
tv.tv_sec = sec;
tv.tv_usec = 0;
result = setsockopt(native_sock, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(struct timeval));
i = GetLastError();
}
}
,我讀到這樣的打擊:
socket_.async_receive(boost::asio::buffer(buffer, 1024),
boost::bind(&tcpClient::handleReceive,
shared_from_this(),
boost::asio::placeholders::error,
buffer,
boost::asio::placeholders::bytes_transferred)
);
,但是當我試圖模仿不arive數據連接撐etablished情況:
$的netstat -ao
TCP 192.168.0.6:62836 192.168.0.5:telnet ESTABLISHED 2840
這是什麼問題爲什麼t他的發生?
電視看起來沒有初始化給我。將其餘成員設置爲0 – 2012-02-16 13:12:02
將其修復爲您看到iquasion,但問題仍然存在 – 2012-02-16 13:40:46