boost-asio

    2熱度

    1回答

    http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/reference/async_write/overload1.html 它規定緩衝區「調用者保留底層內存塊的所有權,必須保證它們在調用處理程序之前保持有效。」 request_buff_ = std::make_shared<boost::asio::const_buffer> (b

    1熱度

    1回答

    boost::asio::io_service::run()在發生錯誤時會拋出boost::system::system_error異常。我應該處理這個異常嗎?如果是這樣,怎麼樣? 我main.cpp中的代碼是這樣的: main() { boost::asio::io_service queue; boost::asio::io_service::work work(queu

    0熱度

    1回答

    我想接受線程0中的連接,然後將此套接字發佈到其他線程(1 - 31)之一以進行負載均衡,然後我希望此套接字的所有其他操作都將位於同一線程中,通過使用協程 - 至避免線程上下文切換 g。 我想用io_service + work + vector<boost::thread>上進行負載平衡不同的線程執行異步回調。 但是與此同時我想通過在同一個線程內使用協程來執行所有其他的操作 - 沒有負載平衡和快速

    2熱度

    2回答

    我正在嘗試使用boost::asio開發簡單的SSL客戶端服務器應用程序。 我已經下載,編譯並運行ssl客戶端服務器的升級示例。儘管如此,在上述例子中,證書必須作爲硬盤中的文件提供給客戶端。我想避免這種情況。 據我所知,在SSL協議中,服務器可以向客戶端發送其證書。然後,客戶端在整個會話期間使用該證書。 如何使用boost::asio庫實現上述功能? 編輯 我希望有一個客戶端,並不需要這樣做: c

    0熱度

    1回答

    我使用的boost :: ASIO,有8個線程 boost::asio::io_service ios; boost::asio::ip::tcp::acceptor(ios); boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port); acceptor.open(endpoint.protoco

    1熱度

    1回答

    我想使用asio從串行設備讀取數據並在字節可用時處理字節。 當使用async_read_until時,由於文件結束(EOF)錯誤,我的回調函數大部分時間被調用。因此,我需要退出回調並重新註冊,直到數據可用。這導致了一個忙碌的循環,我想阻止這個循環。類似的情況發生在read_until,它立即以相同的EOF錯誤返回。 對於POSIX,有poll有效等待,直到設備上的數據可用,但我寧願使用便攜式(包括

    2熱度

    3回答

    我正在開發一個使用boost asio的HTTP服務器。到目前爲止,我一直在使用異步操作(aync_read,async_write等),但我想讓我的服務器是併發的,即與爲每個連接的新客戶端創建新線程的服務器相同。 我讀過一些論壇等,顯然,一個併發服務器只能通過使用提到的異步操作。 我不明白這怎麼可能。 我的意思是,考慮到異步操作的處理程序在調用io_service.run()的線程中執行,讓我們

    1熱度

    1回答

    我知道同一個套接字對象的方法的併發調用會導致未定義的行爲。 但在調用第一個調用的完成處理程序之前調用異步操作並再次調用它(非併發)呢? 說,什麼是以下(如有)預期的行爲: boost::asio::ip::udp::socket socket; // make socket join a multicast group, for instance socket.async_receive(

    3熱度

    1回答

    我正在創建一個客戶端套接字。 爲了讓我的測試人員更容易,我想指定套接字將使用的網卡和端口。 昨天,我在谷歌搜索,我發現:Binding boost asio to local tcp endpoint 通過執行公開,綁定和async_connect,我能夠綁定到特定的網絡卡,我開始看到在Wireshark的交通。 但是,Wireshark報告說套接字已被賦予一個隨機端口而不是我指定的端口。我想如果

    1熱度

    1回答

    我實現了兩個簡單的客戶端和服務器示例,但它不起作用。客戶端和服務器都凍結而沒有任何消息打印。 client.cpp int main(int argc, char * argv[]) { std::string raw_ip = "127.0.0.1"; int port = 3333; try { asio::ip::tcp::endpoint ep(as