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;
}

  

最新文章

  1. angluarjs2项目生成内容合并到asp.net mvc4项目中一起发布
  2. Spring为某个属性注入值或为某个方法的返回值
  3. 一款炫酷的幻灯片播放框架介绍(附demo及使用方法)
  4. [3D跑酷] UI事件处理系统
  5. Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决
  6. select控件变成可输入状态
  7. Can&#39;t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug
  8. 讨论IT选定的技术招聘企业几点
  9. IOS GCD使用实例大全
  10. 字符串解码DecodeString
  11. 彻底关闭windows10自动更新解决方案
  12. 巡风源码阅读与分析---view.py
  13. js如何实现重载
  14. Ico初步理解
  15. Java -- 给定一个int数组,拼接出最大数值
  16. 微信JSSDK分享朋友圈微信自定义分享接口
  17. 鼠标经过显示二级菜单的js特效
  18. git 查询某人的提交记录
  19. ovs源码阅读--流表查询原理
  20. 洛谷P4608 [FJOI2016]所有公共子序列问题 【序列自动机 + dp + 高精】

热门文章

  1. [Machine Learning with Python] Familiar with Your Data
  2. ML | spectral clustering
  3. 平衡树与可持久化treap
  4. 在谈MVP之前,你真的懂MVC吗?
  5. Android图片加载神器之Fresco,基于各种使用场景的讲解
  6. SilverLight-DataControls:四、The PagedCollectionView(分页的集合视图) 对象
  7. vue-router 的URL路径中#的意义
  8. libevent和libev的区别对比
  9. Solidworks输出Autocad的DWG格式乱码怎么办
  10. 利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理