學習boost asio一些小例子

2022-03-15 03:28:04 字數 2174 閱讀 3366

# if

0#include

#include

#include

void handler1(const boost::system::error_code &ec)

void handler2(const boost::system::error_code &ec)

boost::asio::io_service io_service;

void

run() /*

兩個執行緒呼叫run執行同乙個服務,當第一服務在阻塞時,可以再第二個執行緒裡面執行

但這樣會使得使用std::cout混亂,開執行緒要注意,開過多的執行緒是沒有意義的

*/int

main()

#endif

#if 0#include

#include

#include

void handler1(const boost::system::error_code &ec)

void handler2(const boost::system::error_code &ec)

boost::asio::io_service io_service1;

boost::asio::io_service io_service2;

void

run1()

void

run2() /*

第二種方法不是多個執行緒執行同乙個服務,而是建立多個服務,每個服務用同乙個執行緒,如果執行緒數與核心數相同,在乙個核上面不回出現競爭現象

*/int

main()

#endif

//簡單客戶端請求

#if 0#include

#include

#include

#include

boost::asio::io_service io_service;

boost::asio::ip::tcp::resolver resolver(io_service);

boost::asio::ip::tcp::socket sock(io_service);

boost::array

buffer;/**

*@brief 讀**,當讀完時read_handler內部產生錯誤,不回迴圈呼叫了 */

void read_handler(const boost::system::error_code&ec, std::size_t bytes_transferred)

}void connect_handler(const boost::system::error_code&ec)}/*

* *@brief 網域名稱解析**

*@param it 解析後位址 */

void resolver_handler(const boost::system::error_code&ec, boost::asio::ip::tcp::resolver::iterator it)

}int

main()

#endif

//簡單的伺服器接收例子

#if 0#include

#include

boost::asio::io_service io_service;

//接收埠配置,從80埠等待v4型別的ip

一些小技巧

關注 乙個好的程式設計師不應該把所有的判斷交給編譯器和偵錯程式,應該在程式中自己加以程式保護和錯誤定位,具體措施包括 對於所有有返回值的函式,都應該檢查返回值,除非你確信這個函式呼叫絕對不會出錯,或者不關心它是否出錯。一些函式返回錯誤,需要用其他函式獲得錯誤的具體資訊。例如accept返回inval...

一些小技巧

protected void repparent itemdatabound object sender,system.web.ui.webcontrols.repeateritemeventargs e 在父datalist的itemdatabound事件裡面寫子datalist的資料來源 繫結 ...

一些小技巧

protected void repparent itemdatabound object sender,system.web.ui.webcontrols.repeateritemeventargs e 在父datalist的itemdatabound事件裡面寫子datalist的資料來源 繫結 ...