码迷,mamicode.com
首页 > 其他好文 > 详细

Ace(二)Demo示例

时间:2014-09-09 15:14:38      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:blog   os   io   ar   div   cti   log   on   c   

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示例

标签:blog   os   io   ar   div   cti   log   on   c   

原文地址:http://www.cnblogs.com/binmaizhai/p/3962241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!