歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Boost筆記--Asio--(1)簡單的同步通信小示例

Boost筆記--Asio--(1)簡單的同步通信小示例

日期:2017/3/1 9:19:36   编辑:Linux編程

看了一天的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 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved