没有合适的资源?快使用搜索试试~ 我知道了~
首页C++ boost::asio编程-异步TCP详解及实例代码
C++ boost::asio编程-异步TCP详解及实例代码
1星 26 下载量 6 浏览量
更新于2023-03-16
评论
收藏 52KB PDF 举报
主要介绍了C++ boost::asio编程-异步TCP详解及实例代码的相关资料,需要的朋友可以参考下
资源详情
资源评论
资源推荐
C++ boost::asio编程编程-异步异步TCP详解及实例代码详解及实例代码
主要介绍了C++ boost::asio编程-异步TCP详解及实例代码的相关资料,需要的朋友可以参考下
C++ boost::asio编程编程-异步异步TCP
大家好,我是异步方式
和同步方式不同,我从来不花时间去等那些龟速的IO操作,我只是向系统说一声要做什么,然后就可以做其它事去了。如果
系统完成了操作, 系统就会通过我之前给它的回调对象来通知我。
在ASIO库中,异步方式的函数或方法名称前面都有“async_ ” 前缀,函数参数里会要求放一个回调函数(或仿函数)。异步操
作执行 后不管有没有完成都会立即返回,这时可以做一些其它事,直到回调函数(或仿函数)被调用,说明异步操作已经完
成。
在ASIO中很多回调函数都只接受一个boost::system::error_code参数,在实际使用时肯定是不够的,所以一般 使用仿函数携
带一堆相关数据作为回调,或者使用boost::bind来绑定一堆数据。
另外要注意的是,只有io_service类的run()方法运行之后回调对象才会被调用,否则即使系统已经完成了异步操作也不会有任
务动作。
好了,就介绍到这里,下面是我带来的异步方式TCP Helloworld服务器端:
// BoostTcpServer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "boost/asio.hpp"
#include "boost/shared_ptr.hpp"
#include "boost/thread.hpp"
using namespace std;
using namespace boost::asio;
#ifdef _MSC_VER
#define _WIN32_WINNT 0X0501 //避免VC下编译警告
#endif
#define PORT 1000
#define IPV6
//#define IPV4
class AsyncServer
{
public:
//构造函数
AsyncServer(io_service &io,ip::tcp::endpoint &ep):ios(io),acceptor(io,ep)
{
//acceptor(ios,ep);
start();
}
//启动异步接受客户端连接
void start()
{
sock_ptr sock(new ip::tcp::socket(ios));
//当有连接进入时回调accept_handler函数
acceptor.async_accept(*sock,
boost::bind(&AsyncServer::accept_handler,this,placeholders::error,sock));
}
private:
io_service &ios;
ip::tcp::acceptor acceptor;
typedef boost::shared_ptr<ip::tcp::socket> sock_ptr;
void accept_handler(const boost::system::error_code &ec, sock_ptr sock)
{
if(ec)
return;
//输出客户端连接信息
std::cout <<"remote ip:"<<sock->remote_endpoint().address()<<endl;
std::cout <<"remote port:"<<sock->remote_endpoint().port() << std::endl;
//异步向客户端发送数据,发送完成时调用write_handler
sock->async_write_some(buffer("I heard you!"),
bind(&AsyncServer::write_handler,this,placeholders::error));
//再次启动异步接受连接
start();
}
weixin_38604653
- 粉丝: 3
- 资源: 947
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1