boost学习

目录:

原始引用地址: 音频芯片
参考:

Boost.Asio简介

Boost.Asio是一个轻量级的异步网络库,它有简洁,小巧,高效,有良好的可扩展性,支持高并发的IO处理,入门简单等诸多优点。  Boost.Asio在设计上采用和Ace相似的Proactor设计模式,同时内置了对多线程的支持,针对不同的平台,采用了最优的socket模型,可以说能发挥机器的较大并发处理能力。  同时在设计上,Asio在接口上也有良好的可扩展性,几乎每种设计元素都可以根据要求订制和扩充,可以进一步对模型进行抽象和建模来建立自己需要的开发平台。  asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。

安装依赖库

sudo apt-get install libboost-dev 

我把建议安装的软件包,都安装了

UDP

udp接收的代码:

/*
 * filename : udprecv.cpp
 * build : g++ udprecv.cpp -lboost_system -lboost_filesystem -lboost_thread
 * test  : nc -u connect_ip 2300
 */
#include <string>
#include <boost/asio.hpp>
using namespace std;
using namespace boost::asio;
int main(int argc, char* argv[])
{
    io_service my_io_service;
    // ip::udp::endpoint local_endpoint(ip::address_v4::from_string("127.0.0.1"), 2300);//create  a local endpoint
    ip::udp::endpoint local_endpoint(ip::address_v4::from_string("0.0.0.0"), 2300);//create  a local endpoint
    ip::udp::endpoint remote_endpoint; //this enpoint is used to store the endponit from remote-computer
    ip::udp::socket socket(my_io_service, local_endpoint);//create socket and bind the endpoint

    char buffer[40000];
    int nAdd = 0;

    while (1)
    {
        memset(buffer, 0, 40000);//to initialize variables
        nAdd++;
        socket.receive_from(boost::asio::buffer(buffer, 40000), remote_endpoint);//receive data from  remote-computer
        printf("recv %d   datapacket:%s\n",nAdd, buffer);
        printf("from ip: %s port:%d\n",
                remote_endpoint.address().to_string().c_str(), remote_endpoint.port());
    }
    return 0;
}