# if0#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的資料來源 繫結 ...