我最近注意到我的應用程序存在問題,我認爲這是由於我沒有正確使用boost::asio
,瞭解tcp解析器的功能。用IP和端口解析查詢和創建端點之間的差別
基本上,我使用boost::asio::ip::tcp::resolver
來讓端點連接到。
最近我發現它可以提供多個端點(特別是當我連接到本地主機時)。
目前我要求所有終點的async_connect
。我不是百分之百肯定,但我認爲這很糟糕。我應該向他們一個請求一個async_connect,等待答覆,並嘗試下一個當且僅當它失敗。
所以基本上知道我有兩個選擇,如果我想使用async_connect
這些端點:
重構我的代碼,這樣我
async_connect
處理失敗正確,失敗嘗試連接到其他可用端點。我將不得不通過端點迭代器。下降解析器和使用端點我建立我自己是這樣的:
boost::asio::ip::tcp::endpoint("localhost", 20015)
我種得,我應該使用的第一個解決辦法,分解帶來的東西比自身更多的感覺構建終點。
但是,解析器帶來了什麼?自我構建的終結點如何自我解決?
感謝您的回答,這是非常有幫助的。然而,我發現使用異步解析是不穩定的(我的平臺是窗口,而且我經常得到'WSA_OPERATION_ABORTED'錯誤'995')。所以我選擇了具有同步解析的中間解決方案和每個端點上的迭代異步連接,並且重構我的代碼非常簡單。 – Arthur