看了一天的Boost.Asio庫的資料,現在還是有點迷糊。對於Asio的學習還是要繼續,同時在這裡也記錄下自己入手的第一個小例子。感覺先從小例子入手,然後再去理解那些原理概念啥的,要好一些。因為概念原理都太抽象了,有了小例子就知道是怎麼個套路了。對於Asio庫的在後面的學習中會陸續的寫些文章來記錄一些筆記。
(注:我不是專業的網絡人士,有些東西可能我自己理解的很幼稚,沒辦法我連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)客戶端的代碼
#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;
}
編譯及運行結果:
Ubuntu下編譯安裝boost庫 http://www.linuxidc.com/Linux/2013-07/87573.htm
Ubuntu下編譯boost 1.52b http://www.linuxidc.com/Linux/2013-02/79004.htm
VS2008下直接安裝使用Boost庫1.46.1版本 http://www.linuxidc.com/Linux/2014-08/105253.htm
Ubuntu編譯安裝boost並在eclipse C/C++中使用 http://www.linuxidc.com/Linux/2011-04/34790.htm
Boost 的詳細介紹:請點這裡
Boost 的下載地址:請點這裡