linux系統安裝boost库及使用

3 篇文章 0 订阅
1 篇文章 0 订阅

boost::asio网络库编译

安装教程

boost 库安装教程

使用

server

#include <boost/system/error_code.hpp>
#include <iostream>
#include <boost/asio.hpp>
#include <chrono>
#include <ctime>
#include <string>
#include <ratio>
#include <iomanip>
#include <sstream>

std::string make_daytime_string(){
    std::stringstream ss;
    ss <<"server time : ";
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
    std::time_t just = std::chrono::system_clock::to_time_t(now);
    ss <<std::put_time(std::localtime(&just),"%F %T");
    return ss.str();
}
int main(){
    #ifdef XXX
    std::chrono::milliseconds ms{3};
    std::chrono::microseconds us = 2*ms;
    std::chrono::duration<double,std::ratio<1,1000*1000>> hz30{3};
    std::cout <<"3 ms duratioj has "<<ms.count()<<"\n6000 us duration has "<<us.count()<<"\n3.5 hz duration has "<<hz30.count()<< std::endl;
    std::chrono::minutes t1 {10};
    std::chrono::seconds t2 {60};
    std::chrono::seconds t3 = t2 - t1;
    std::cout <<t3.count()<<" seconds"<<std::endl;
    using days_type = std::chrono::duration<int,std::ratio<60*60*24>>;
    std::chrono::time_point<std::chrono::system_clock,days_type> today = std::chrono::time_point_cast<days_type>(std::chrono::system_clock::now());
    std::cout <<today.time_since_epoch().count()<<" days since epcoh"<< std::endl;
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
    std::time_t last = std::chrono::system_clock::to_time_t(now - std::chrono::hours(24));
    std::time_t just = std::chrono::system_clock::to_time_t(now);
    std::time_t next = std::chrono::system_clock::to_time_t(now + std::chrono::hours(24));
    std::cout <<"one day ago,the time was "<<std::put_time(std::localtime(&last),"%F %T")<< std::endl;
    std::cout <<"just now,the time is "<<std::put_time(std::localtime(&just),"%F %T")<< std::endl;
    std::cout <<"tommorw,the time is "<<std::put_time(std::localtime(&next),"%F %T")<< std::endl;
    std::cout <<make_daytime_string()<< std::endl;
    #endif
    try{
        boost::asio::io_context io_context;
        boost::asio::ip::tcp::acceptor acceptor(io_context,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),6768));
        for(int i = 1; i < 10000; i++){
            std::cout <<"run time "<<i<<" second"<< std::endl;
            boost::asio::ip::tcp::socket socket(io_context);
            acceptor.accept(socket);
            std::string message = make_daytime_string();
            boost::system::error_code ignored_error;
            boost::asio::write(socket,boost::asio::buffer(message),ignored_error);
        }
    }catch(std::exception &e){
        std::cerr <<e.what()<< std::endl;
    }
}

client

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <boost/system/error_code.hpp>

int main(int argc,char *argv[]){
    try{
        if(argc != 2){
            std::cerr <<"usage: client <host>"<< std::endl;
            return 0;
        }

        boost::asio::io_context io_context;
        boost::asio::ip::tcp::resolver resolver(io_context);
        auto endpoints = resolver.resolve(argv[1],"6768");
        boost::asio::ip::tcp::socket socket(io_context);
        boost::asio::connect(socket,endpoints);
        
        for(int i = 1; i < 10000; i++){
            std::cout <<i<< std::endl;
            boost::array<char,128> buff;
            boost::system::error_code error;
            std::size_t len = socket.read_some(boost::asio::buffer(buff),error);
            if(error == boost::asio::error::eof){
                std::cout <<"close by server..."<< std::endl;
                break;
            }
            else if(error){
                throw boost::system::system_error(error);
                std::cout <<"ERROR..."<< std::endl;
            }
            std::cout.write(buff.data(),len);
        }
    }catch(std::exception &e){
        std::cerr <<e.what()<< std::endl;
    }
}

编译命令

g++ boost_server.cpp -lboost_system -lboost_thread -lpthread -o server

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值