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 ...
随机推荐
- echarts 金字塔
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Babel6.x的安装过程
1.首先安装babel-cli(用于在终端使用babel) npm install -g babel-cli 2.然后安装babel-preset-es2015插件 npm install --sav ...
- Java1.8新特性——接口改动和Lambda表达式
Java1.8新特性——接口改动和Lambda表达式 摘要:本文主要学习了Java1.8的新特性中有关接口和Lambda表达式的部分. 部分内容来自以下博客: https://www.cnblogs. ...
- [转] 32位 PL/SQL Develope r如何连接64位的Oracle 图解
原文地址:LINK 由于硬件技术的不断更新,Win7系统逐渐成为主流,而且计算机内存逐渐增大,为了充 分的利用内存资源(因为32为系统最多只能用到3G左右的内存),提高系统性能,很多人开始使用Win7 ...
- npm升级所有可更新包
使用npm管理node的包,可以使用npm update <name>对单个包升级,对于npm的版本大于 2.6.1,可以使用命令: npm install -g 升级全局的本地包. 对于 ...
- Office HPDeskjetD2468 打印机电源灯闪烁不停,打印机不工作怎么办
怎么处理HP DeskjetD2468 打印机电源灯闪烁不停,打印机不工作? 最佳答案 一般电源灯闪烁时因为你的打印喷头上面的盖子没有盖好,你看看.....盖好之后关机再开 谢谢!
- bootstrap3分页
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- maximum-depth-of-binary-tree——找出数的最大深度
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- SpringBoot学习之@Controller和@RestController
今天我们来研究一下@Controller和@RestController的用法 @Controller 1.Controller可以用来跳转页面,并且必须配合模板来使用. @Controller // ...
- Fighting regressions with git bisect---within git bisect algorithm
https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html Fighting regressions with gi ...