LinuxC/C++编程基础(20) 使用boost::asio搭建服务器简单实例

本文介绍了如何利用Boost.ASIO库在Linux上构建C++服务器,包括CrossDomain类的设计,使用pimpl模式,以及startServer、handle_accept等关键函数的实现,展示了服务器监听和接受客户端连接的过程。
摘要由CSDN通过智能技术生成

一.crossdomain.h头文件的编写,如下:

#ifndef CROSSDOMAIN_H
#define CROSSDOMAIN_H
#include <string>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
using namespace boost;
class CrossDomain{
private:
    struct Server;
    shared_ptr<Server> m_pserver;//有的读者已经看出来了,这是基于pimpl的模式的一个实现
    CrossDomain(asio::io_service& io_service,const std::string& local_port);
    static CrossDomain* s_instance;
public:
    static void create(asio::io_service& io_service,const std::string& local_port){//工厂模式以及单例模式
        s_instance = new CrossDomain(io_service,local_port);
    }
    static CrossDomain* instance();
    void startServer();
};
#endif

说明:(1)struct Server;只是一个前向声明

            (2)startServer()函数在后面的实现中,会调用struct Server里面的start_server()函数,这便是pimpl模式的关键点

转载请注明出处:山水间博客,http://blog.csdn.net/linyanwen99/article/details/8274754

二.crossdomain.cpp源文件中关键函数的实现,如下:

1.CrossDomain构造函数的实现,如下:

CrossDomain::CrossDomain(asio::io_service& io_service,const std::string& local_port)
    :m_pserver(new Server(io_service,local_port)){
}

说明:可见在CrossDomain构造函数的实现中,把Server的一个实例对象交给了智能指针m_pserver管理

2.struct Server的构造函数的实现,如下:

Server(asio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值