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 ...
随机推荐
- 进击JavaScript核心 --- (2)函数和预解析机制
一.函数 每个函数都是 Function类型的实例,也具有属性和方法.由于函数也是一个对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定 1.函数的定义方式 (1).函数声明 fun ...
- CDOJ_149 解救小Q
原题网址:http://acm.uestc.edu.cn/#/problem/show/149 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她. 迷宫里面有一些陷阱,一旦走到陷阱里,就会 ...
- linux tomcat shutdown.sh 有时不能结束进程,使用如下指令进度重启
ps -ef | grep tomcat | grep -v grep | cut -c 9-15 | xargs kill -9 & ./startup.sh
- nginx--cookies转发
nginx根据cookie分流 nginx根据cookie分流众所周知,nginx可以根据url path进行分流,殊不知对于cookie分流也很强大,同时这也是我上篇提到的小流量实验的基础. 二 ...
- Laravel composer自定义命令空间,方便引用第三方库
第一步:自定义目录 在app文件夹下新建Library目录,做为第三方库的目录 第二步: 修改composer.json文件 autoload节点下的psr-4自定义命名空间 规则: key: 命名空 ...
- openfire Android学习(五)------连接断开重连
首先要创建连接监听器,用来监听连接状态,这里我写了一个类 继承了ConnectionListener,重写了里面5个方法,最重要的两个方法connectionClosed()和connectionCl ...
- 线性回归,logistic回归分类
学习过程 下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型.就如同上面的线性 ...
- sh脚本——#!/bin/bash
#!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径. bash只是shell的一种,还有很多其它shell,如:sh ...
- JavaScript的string方法(demo)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- mysql报错锦集
MySQL 启动报错 - ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/ ...