看了一天的Boost.Asio庫的資料,如今仍是有點迷糊。對於Asio的學習仍是要繼續,同時在這裏也記錄下本身入手的第一個小例子。感受先從小例子入手,而後再去理解那些原理概念啥的,要好一些。由於概念原理都太抽象了,有了小例子就知道是怎麼個套路了。對於Asio庫的在後面的學習中會陸續的寫些文章來記錄一些筆記。ios
(注:我不是專業的網絡人士,有些東西可能我本身理解的很幼稚,沒辦法我連tcp/ip協議瞭解的不多。只能邊學邊去了解了。)服務器
(1)服務器端代碼網絡
#include <iostream> #include <boost/asio.hpp> int main(int argc,char * argv[]){ boost::asio::io_service service; boost::asio::ip::tcp::acceptor acceptor(service,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),5000)); bool is_stop=false; while(!is_stop){ boost::asio::ip::tcp::socket sock(service); acceptor.accept(sock); std::cout<<sock.remote_endpoint().address()<<std::endl; boost::system::error_code errcode; sock.write_some(boost::asio::buffer("hello world"),errcode); if(errcode){ std::cout<<boost::system::system_error(errcode).what()<<std::endl; break; } } return 0; }
(2)客戶端的代碼socket
#include <iostream> #include <boost/asio.hpp> int main(int argc,char * argv[]){ boost::asio::io_service service; boost::asio::ip::tcp::acceptor acceptor(service,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),5000)); bool is_stop=false; while(!is_stop){ boost::asio::ip::tcp::socket sock(service); acceptor.accept(sock); std::cout<<sock.remote_endpoint().address()<<std::endl; boost::system::error_code errcode; sock.write_some(boost::asio::buffer("hello world"),errcode); if(errcode){ std::cout<<boost::system::system_error(errcode).what()<<std::endl; break; } } return 0; }
編譯及運行結果:tcp