错误码很重要,可以由此判断网络连接到底发生了神马事情,从而驱动高层逻辑的行为。只有笼统的错误码判断的网络层是不够规范的,鄙人觉得有些错误码还是需要在网络层就区分开的,特此记录一些当前实验的错误码以及发生原因。以下是一部分在async_receive()的handler处捕获到的比较有用的错误码错误码...
分类:
其他好文 时间:
2014-06-28 18:44:59
阅读次数:
137
///////////////////////////////////////
// Asio同步socket连接示例
//
#include
#include
#include
#include
using namespace boost;
typedef boost::asio::io_service IoService;
typedef boost::asio::ip::tcp T...
分类:
其他好文 时间:
2014-06-28 09:24:33
阅读次数:
234
io_service的作用io_servie实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的...
分类:
其他好文 时间:
2014-06-24 10:48:03
阅读次数:
212
boost::asio 在创建io_service时,可以指定线程数,如果没有指定,默认是一个线程,也就是io_service run的那个线程,如果没有任务运行,该线程会退出。 如果在创建的时候指定了线程数,那么io_service在执行的时候线程数就可以并发执行,如果你run的线程还是只有1.....
分类:
其他好文 时间:
2014-06-24 10:41:38
阅读次数:
132
构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletionStatus 之后执行。Dispatch会首先检查当前t...
分类:
其他好文 时间:
2014-06-24 09:24:40
阅读次数:
156
你要是看过basic_stream_socket的文档,里面提到async_write_some不能保证将所有要发送的数据都发出去。并且提到如果想这样做,需要使用boost asio的async_writehttp://www.boost.org/doc/libs/1_53_0/doc/html/b...
分类:
其他好文 时间:
2014-06-24 09:22:01
阅读次数:
282
只有看boost源码才能弄明白发生了什么。首先我是将vector里面写入了数据,然后用boost::asio::buffer将vector构造成了mutable_buffer_1对象。参考该文档的重载形式:http://www.boost.org/doc/libs/1_53_0/doc/html/b...
分类:
其他好文 时间:
2014-06-23 08:30:25
阅读次数:
446
在实际产品运行中,对连接管理有了更新的认识,这里分享一下。shared_ptr管理连接对象的生命周期shared_ptr的引用计数器决定了连接对象的生命周期。这里我说的连接对象就是在我的前文:http://blog.csdn.net/csfreebird/article/details/852262...
分类:
其他好文 时间:
2014-06-23 08:26:05
阅读次数:
348
有人说C++是带类的C;有人说C++是面向对象编程语言;有人说C++是面向过程与面向对象结合的语言。类似的评论网上有很多,虽然正确,却片面,是断章取义之言。 C++是实践的产物,C++并没有为了成为某某类型的语言而设计,而是一切以工程实践为目的,一切以提升语言能力为目的。 1983年C+...
分类:
其他好文 时间:
2014-06-20 23:27:32
阅读次数:
520
* 常见流程分析之一(Tcp异步连接)我们用一个简单的demo分析Tcp异步连接的流程: 1 #include 2 #include 3 4 // 异步连接回调函数 5 void on_connect(boost::system::error_code ec) 6 { 7 if (ec...
分类:
其他好文 时间:
2014-06-20 23:26:52
阅读次数:
522