有沒有辦法在asio中檢查特定時間的數據?檢查數據與時間?
我有一個客戶端,其中有一個方法
bool ASIOClient::hasData()
{
return m_socket->available();
}
的ASIO插座,我想有某種延遲的這裏,所以它會檢查數據像最長1秒,並返回更多EALY。此外,我不想因爲顯而易見的原因進行民意調查,因爲它明顯需要一秒鐘的時間。爲什麼我使用這種方法是因爲我發送數據給客戶端並等待響應。如果他在一段時間內沒有響應,我會關閉套接字。那就是hasData提到的。
我知道使用select和fd_set是可能的。
的ASIO客戶端的服務器套接字類的接受方法創建的,後來用於處理請求和數據發送回誰在這裏連接了一個。
int ASIOServer::accept(const bool& blocking)
{
auto l_sock = std::make_shared<asio::ip::tcp::socket>(m_io_service);
m_acceptor.accept(*l_sock);
auto l_client = std::make_shared<ASIOClient>(l_sock);
return 0;
}
首選[poll(2)](http://man7.org/linux/man-pages/man2/poll.2.html)到'select' –
@BasileStarynkevitch我正在爲Windows開發。但我知道我可以選擇超時(或在這裏投票)。但是,我怎麼能在一個Asio插座上做到這一點?它是否有任何simelar功能? – BennX
它是特定於操作系統的。我對Windows一無所知。問另一個問題(並用Windows標記) –