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 ...
随机推荐
- 缓存区溢出检测工具BED
缓存区溢出检测工具BED 缓存区溢出(Buffer Overflow)是一类常见的漏洞,广泛存在于各种操作系统和软件中.利用缓存区溢出漏洞进行攻击,会导致程序运行失败.系统崩溃.渗透测试人员利用这 ...
- spring security 单一账户多地方登陆提醒, ajax 拦截器 Interceptor
spring-security.xml部分代码: <http auto-config="false" > <access-denied-handler ref=& ...
- gradle_____最后到齐的构建工具
从今年开始,开始换用gradle 了,个人感觉还好,配置不像maven,一堆xml 文件,一个jar 一行字符,内置的task 和很多.自定义task 也挺简单,比ant简单一些. 简单配置文件示例: ...
- 【java】RC4加密转16进制获取长度为40的不重复优惠码字符串 【未优化版本】
需求:需要一串给各机构独有的优惠码 间接需求:固定长度.不重复.没有规律可循 实现思想如下: 1.首先获取一个UUID 2.去除UUID中的“-” 3.小写转大写 4.获取一个固定长度字符串 5.按照 ...
- hdu 4300 Clairewd’s message(具体解释,扩展KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300 Problem Description Clairewd is a member of FBI. ...
- hdu5384
题意:给你n个母串.m个匹配串,让你求出对于每一个母串 全部匹配串出现的次数和. 思路:完全然全邝斌的模板啊... 凝视掉一行代码就能a... . 代码: #include <algorithm ...
- [反汇编练习] 160个CrackMe之036
[反汇编练习] 160个CrackMe之036. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- git extensions远程配置
http://blog.csdn.net/pgmsoul/article/details/7860393 远程地址是如下格式:git@github.com:yaoname/project.git 保存 ...
- 怎样在ubuntu 系统上为 php 加上 redis 扩展
近期一个项目.,想用redis 作为数据库,php是不待redis 扩展,必须安装,怎么安装呢?我在网上找的非常多资料发现都是预编译的.但都没成功.于是就找了第二种方法是不须要编译直接安装就能够了. ...
- vue2.0 自定义 侧滑删除(LeftSlider)组件
1.自定义侧滑删除组件 LeftSlider.vue <!-- 侧滑删除 组件 --> <template> <div class="delete"& ...