
BOOST
Hit_HSW
软件工程师
展开
-
websocket++序列: Server
websocket服务器主要包含: (1) 设置日志级别 (2) 初始化asio (3) 设置默认Handler (4) 进行监听...原创 2020-04-12 17:39:15 · 530 阅读 · 0 评论 -
websocket++序列: Client
关于websocketpp 示例注释(https://docs.websocketpp.org/md_tutorials_utility_client_utility_client.html), 实际上是熟悉endpoint和connection,并且,两者之间关系: endpoint中关于connection相关配置在创建时拷贝道connection中,如果endpoint配置进行更新时,并不影...原创 2020-04-12 17:39:07 · 1033 阅读 · 0 评论 -
websocket++序列: Logger
1. 日志类型1.1 类别日志类型 说明 websocketpp::log::alevel 接入日志,默认只有debug/development日志 websocketpp::log::elevel 错误日志 1.2 日志策略 日志策略 备注 websocketpp::log::basic 基本日志策略,写日志到std::ostream,...原创 2020-04-12 17:38:50 · 477 阅读 · 0 评论 -
websocket++序列: Config
1. Core Configs1.1 Policies:Typedef Name Effect concurrency_type Concurrency policy: 并行策略 elog_type Error logger type: 错误日志类型 alog_type Access logger type: 接入日志类型 request_type...原创 2020-04-12 17:38:58 · 272 阅读 · 0 评论 -
websocket++序列: Handler
1. Connection Handlers: 同连接相关的Handler Event Signature Version Socket Initial: 套接字初始化 socket_init(connection_hdl, asio::ip::tcp::socket&) >0.3.0 Asio Transport TCP established...原创 2020-04-12 17:38:42 · 728 阅读 · 0 评论 -
boost::asio序列: TCP通信
基于在UDP通信的相同原因,我们将原始的boost::asio示例进行修改,以保证能够在自己的PC上能够运行:1. TCP同步客户端#include <iostream>#include <boost/array.hpp>#include <boost/asio.hpp>using boost::asio::ip::tcp;int main...原创 2020-04-12 17:38:31 · 1338 阅读 · 0 评论 -
boost::asio序列: UDP 通信
为了能够测试,我将原来boost的示例中的端口13更改为60013,因为在13端口为daytime服务的专用端口: 如果强制使用运行时将会导致权限错误(ubuntu16.04)1. 同步UDP 客户端#include <iostream>#include <boost/array.hpp>#include <boost/asio.hpp>us...原创 2020-04-12 17:38:21 · 2504 阅读 · 0 评论 -
boost::asio序列: 多线程
示例代码中,在原来boost::asio代码基础上,增加了打印线程id的代码,方便理解多线程执行boost::asio::io_context::run()(或 boost::asio::io_service::run())的特点,同时,在这个示例中,学习boost::asio::io_context::strand的作用,就是,控制执行的顺序,先加入的先执行#include <io...原创 2020-04-12 17:38:12 · 1556 阅读 · 0 评论 -
boost::asio序列: boost::bind 和 std::bind 和 class member function
1. boost::bind => class member function#include <iostream>#include <boost/asio.hpp>#include <boost/bind.hpp>#include <boost/date_time/posix_time/posix_time.hpp>clas...原创 2020-04-11 16:00:08 · 301 阅读 · 0 评论 -
boost::asio序列: boost::bind 和 std::bind
1. 采用boost::bind#include <iostream>#include <boost/asio.hpp>#include <boost/bind.hpp>#include <boost/date_time/posix_time/posix_time.hpp>void print(const boost::system:...原创 2020-04-11 15:52:55 · 1334 阅读 · 0 评论 -
boost::asio序列: 计时器
以下两个示例都是使用计时器的例子,超时时长设置为5秒1. 使用计时器同步等待超时#include <iostream>#include <boost/asio.hpp>#include <boost/date_time/posix_time/posix_time.hpp>int main(){ // 如果采用boost旧版本,则: boo...原创 2020-04-11 15:38:02 · 201 阅读 · 0 评论 -
Boost::Asio 序列: 域名解析
// #include <QCoreApplication>/* * ModuleName: Main * Description: Boost::asio::ip::tcp::resolver * Author: hsw * Date: 2020-04-11 * */#include <iostream>#include <boost/asio...原创 2020-04-11 15:25:15 · 495 阅读 · 0 评论 -
boost::asio 序列19: basic_resolver
explicit basic_resolver(const executor_type& ex) 和 template <typename ExecutionContext> explicit basic_resolver(ExecutionContext& context, typename enable_if&...原创 2020-04-11 15:21:46 · 360 阅读 · 0 评论 -
boost::asio 序列18:basic_socket_acceptor
explicit basic_socket_acceptor(const executor_type& ex) 和 template <typename ExecutionContext> explicit basic_socket_acceptor(ExecutionContext& context, typen...原创 2020-04-11 15:21:37 · 670 阅读 · 1 评论 -
boost::asio序列17: basic_datagram_socket 和 basic_stream_socket
explicit basic_datagram_socket(const executor_type& ex) 和 template <typename ExecutionContext> explicit basic_datagram_socket(ExecutionContext& context, typ...原创 2020-04-11 15:21:17 · 582 阅读 · 0 评论 -
boost::asio 序列15: basic_socket
explicit basic_socket(const executor_type& ex) 创建&未打开的socket template <typename ExecutionContext> explicit basic_socket(ExecutionContext& context, typena...原创 2020-04-11 15:20:52 · 509 阅读 · 0 评论 -
boost::asio 序列16: tcp::socket 和 udp::socket & socket_basic
reactive_socket_service_base execution_context_service_base<reative_socket_service<Porotocol>> \ ...原创 2020-04-11 15:21:26 · 436 阅读 · 0 评论 -
boost::asio序列13: io_object_executor
实现I/O handler的投递// Wrap the (potentially polymorphic) executor so that we can bypass it when// dispatching on a target executor that has a native I/O implementation.template <typename Executo...原创 2020-04-11 15:21:05 · 458 阅读 · 0 评论 -
boost::asio序列14:basic_io_object
关联io_context对象,实际上是获取io_context关联的service,并且,service用于实际的I/O操作和对应Handler配发 // Type trait used to determine whether a service supports move. template <typename IoObjectService> class serv...原创 2020-04-06 11:33:56 · 291 阅读 · 0 评论 -
boost::asio序列12: epoll_reactor
epoll_reactor中调用epoll_wait(....)实现I/O事件的监听,对于ready的事件,加入道ops中,等待调度器分配和执行void epoll_reactor::run(long usec, op_queue<operation>& ops){ // This code relies on the fact that the scheduler...原创 2020-04-06 11:08:38 · 628 阅读 · 0 评论 -
boost::asio序列11: scheduler
scheduler主要用于实现linux系统下的异步I/O对应的Handler分配,通过epoll_reactor实现调度class scheduler : public execution_context_service_base<scheduler>, public thread_context{public: typedef scheduler_oper...原创 2020-04-06 10:54:46 · 718 阅读 · 2 评论 -
boost::asio序列9: service_register
主要用于service注册,其中,注册的key为execution_context::service::key类型: friend class boost::asio::detail::service_registry; struct key { key() : type_info_(0), id_(0) {} const std::type_info* type...原创 2020-04-06 10:06:26 · 373 阅读 · 0 评论 -
boost::asio 序列10: scheduler_operation
该类用于linux下的io_context::service,即scheduler中,用于表示所有操作的基类,并且,操作采用单链表,具体实现如下:(1) complete(void* owner, const boost::system::error_code& ec, std::size_t bytes_transferred), 实际就是一个操作完成时调用的函数,实际就是调用构造函...原创 2020-04-06 10:06:58 · 290 阅读 · 0 评论 -
boost::asio序列6: io_context
io_context的具体实现如下代码,io_context最主要的函数为:(1) 构造函数,其中参数控制并行的线程数,对于性能比较重要(2) 各类handler执行函数:run(), run_one(), poll(), poll_one()....(3) io_context::execution_type实际上就是辅助类,用于向io_context提交handler,并被io_...原创 2020-04-06 10:05:22 · 1483 阅读 · 0 评论 -
boost::asio 序列5: io_context
io_context函数 备注 run() (1)当全部异步操作完成或调用stop()时结束 (2) 阻塞线程 run_one() (1)当全部异步操作完成或调用stop()时结束 (2) 阻塞线程 (3) 至多执行一个异步任务 run_for() (1) 当全部异步操作完成或调...原创 2020-04-06 10:04:34 · 1602 阅读 · 0 评论 -
boost::asio序列4: execution_contex
1. execution_contextexecution_context_service_base execution_context::service: 内部类 service_id execution_context::id: 内部类 service_already_exists std::logic_error invalid_service_owner...原创 2020-04-06 10:04:09 · 311 阅读 · 0 评论 -
boost::asio序列3: execution_context
函数名称 void notify_fork(fork_event event) enum fork_event { /// Notify the context that the process is about to fork. fork_prepare, /// Notify the contex...原创 2020-04-06 10:03:52 · 392 阅读 · 0 评论 -
boost::asio序列2:execution_context
class io_context : public execution_contextexecution_context是io_context的基类,表示函数对象执行的上下文。execution_context代表函数对象执行的位置。execution_context和services(1) execution_context实现一个可拓展的,类型安全的,services多态...原创 2020-04-05 20:34:22 · 888 阅读 · 1 评论 -
Boost::asio序列1: io_context
支持异步I/O功能Boost::asio::io_context是异步I/O的核心功能,io_context提供用户的异步I/O对象的的核心I/O功能,包含:(1) boost::asio::ip::tcp::socket(2) boost::asio::ip::tcp::acceptor(3) boost::asio::ip::upd::socket(4) boost::as...原创 2020-04-05 19:46:20 · 2652 阅读 · 0 评论 -
Windows + MGWIN 编译boost
1.环境说明1.1. window 81.2 Qt + MGWin 编译器1.3 boost 1.70.02.编译步骤2.1 下载boost源代码,解压缩,示例: C:\Three_part_lib\boost_1_70_0\boost_1_70_0, 截图如下2.2 打开Qt MGWin的cmd界面, win8上的打开方式如下图,注意,选择qt XXXX for...原创 2019-05-26 17:22:58 · 1517 阅读 · 0 评论