Ace(二)Demo示例
Client:
#include "ace/Log_Msg.h" #include "ace/OS.h" #include "ace/Service_Config.h" #include "ace/Event_Handler.h" #include "ace/Reactor.h" #include "ace/Svc_Handler.h" #include "ace/SOCK_Stream.h" #include "ace/Connector.h" #include "ace/SOCK_Connector.h" class CClientHandler : public ACE_Svc_Handler <ACE_SOCK_STREAM, ACE_NULL_SYNCH> { private: char* data; static const int stDataSize = 64; public: CClientHandler() { data = new char[stDataSize]; } int open(void*) { ACE_DEBUG((LM_DEBUG,ACE_TEXT("client connection established.\n"))); ACE_Reactor::instance()->register_handler(this, ACE_Event_Handler::READ_MASK); char *message = "Client connected successfully in client.\n"; peer().send(message, strlen(message) + 1); return 0; } int handle_input(ACE_HANDLE) { peer().recv(data, stDataSize); ACE_DEBUG((LM_DEBUG, "data:%s\n", data)); return 0; } }; int main(int argc, char* argv[]) { const int cPort = 12344; ACE_INET_Addr addr(cPort, "localhost"); ACE_Connector<CClientHandler, ACE_SOCK_CONNECTOR> connector; CClientHandler *handler = new CClientHandler(); if(connector.connect(handler, addr) == -1) { ACE_ERROR((LM_ERROR, "%P|%t, %s", "Connection failed.\n")); } ACE_Reactor::run_event_loop(); return 0; }
Server:
#include "ace/Log_Msg.h" #include "ace/OS.h" #include "ace/Service_Config.h" #include "ace/Event_Handler.h" #include "ace/Reactor.h" #include "ace/Svc_Handler.h" #include "ace/SOCK_Stream.h" #include "ace/Acceptor.h" #include "ace/SOCK_Acceptor.h" class CServerHandler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> { private: char* data; static const int stDataSize = 64; public: CServerHandler() { data = new char[stDataSize]; } int open(void *) { ACE_DEBUG((LM_INFO, "%P|%t, %s", "Server Connection established.\n")); ACE_Reactor::instance()->register_handler(this, ACE_Event_Handler::READ_MASK); char *message = "Client connected successfully in server.\n"; peer().send(message, strlen(message) + 1); return 0; } int handle_input(ACE_HANDLE) { ssize_t recv_size = peer().recv(data, stDataSize); if (recv_size <= 0) { ACE_DEBUG((LM_WARNING, " No data received.\n")); } else { ACE_DEBUG((LM_DEBUG, "data:%s\n", data)); char *message = "Request is processed successfully!\n"; peer().send(message, strlen(message) + 1); } return 0; } }; int main(int argc, char* argv[]) { ACE_DEBUG((LM_DEBUG,"Test server running...\n")); const int cPort = 12344; ACE_INET_Addr addr(cPort); ACE_Acceptor<CServerHandler, ACE_SOCK_ACCEPTOR> acceptor; if (acceptor.open(addr) == -1) { ACE_DEBUG((LM_WARNING, "Accept error.\n")); } ACE_Reactor::run_event_loop(); return 0; }
Ace(二)Demo示例的更多相关文章
- Demo 示例控制输入光标位置
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <meta name="aut ...
- Ext简单demo示例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)
Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...
- kafka_2.11-0.8.2.1+java 生产消费程序demo示例
Kafka学习8_kafka java 生产消费程序demo示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kaf ...
- SpringBoot整合Swagger2(Demo示例)
写在前面 由于公司项目采用前后端分离,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理 ...
- Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例
Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...
- Echarts图表常用功能配置,Demo示例
先看下效果图: 就如上图所示,都是些常用的基本配置. Legend分页,X轴设置,Y轴设置,底部缩放条设置, 数值显示样式设置,工具箱设置,自定义工具按钮, 绑定点击事件等等.这些配置代码中都做了简单 ...
- Java微信扫描支付模式二Demo ,整合官网直接运行版本
概述 场景介绍 用户使用微信“扫一扫”扫描二维码后,获取商品支付信息,引导用户完成支付. 详细 代码下载:http://www.demodashi.com/demo/13880.html 一.相关配置 ...
- 微信公众号 扫码支付 模式二 demo
扫码支付 本文附有代码,在下方,如果不熟悉场景的可以看看下面的场景介绍 场景介绍 官网介绍地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?ch ...
随机推荐
- 仓鼠找sugar(lca)
洛谷——P3398 仓鼠找sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅( ...
- HTTP状态码之200和304
HTTP状态码之200和304 HTTP状态码(HTTP Status Code)是一种表示网页服务器响应状态的三位数字编码.通过这些数字,可以简化状态的表达.状态码有几十种,其中首位数字为1-5 ...
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 2) Minimization dp
原题链接:http://codeforces.com/contest/572/problem/D 题意 给你个数组A和n,k,问你排列A后,下面的最小值是多少. 题解 先排个序,要填充像1,1+k,1 ...
- 【原】手写spring async异步组件
最近在工作中使用到了spring自带的Async,主要是为了把其中耗时多.响应慢.计算复杂的业务抽取几个模块出来,并行查询.不得不说spring自带的比传统线程池提交在代码层次上看起来优雅简洁了不少 ...
- HttpClient的Post请求数据
最近在项目中需要添加Post请求数据,以前的Get请求是使用JDK自带的URLConnection.在项目组人员的推荐下,开始使用HttpClient. HttpClient简介: HttpClien ...
- 9.【nuxt起步】-scroll分页加载
面是单页,下面实现一个列表页和分页加载的例子 1.新建pages/list.vue <template> <div> 分页加载列表页面 </div> </te ...
- Delphi图像处理 -- 文章索引
转载:http://blog.csdn.net/maozefa/article/details/7188354 本文对已发布<Delphi图像处理>系列文章进行索引链接,以方便阅读和查找. ...
- Kermit,Xmodem,1K-Xmodem,Ymodem,Zmodem传输协议小结
来自:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1. MA ...
- centos7+ 安装Docker 17.03.2
cnetos7 安装 docker17.03.2 升级内核 http://m.blog.csdn.net/article/details?id=52047780 注意切换内核时查看 新内核位置 awk ...
- Tachyon源代码结构分析(二)
公布人:南京大学PASA大数据实验室顾荣 前言 在上一篇<Tachyon源代码结构分析(一)>中,我们介绍了Tachyon的四大模块(Client模块.Master模块.Worker模块以 ...