|
// ACE_Echo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <ace/Reactor.h>
#include <ace/Svc_Handler.h>
#include <ace/Connector.h>
#include <ace/Synch.h>
#include <ace/SOCK_Connector.h>
class My_Svc_Handler;
typedef ACE_Connector<My_Svc_Handler,ACE_SOCK_CONNECTOR> MyConnector;
class My_Svc_Handler:
public ACE_Svc_Handler <ACE_SOCK_STREAM,ACE_NULL_SYNCH>
{
private:
public:
My_Svc_Handler(){}
int open(void*)
{
//注册相应事件
ACE_Reactor::instance()->register_handler(this,
ACE_Event_Handler::READ_MASK);
return 0;
}
int handle_input(ACE_HANDLE)
{
return 0;
}
};
int main(int argc, char* argv[])
{
ACE_INET_Addr addr(3000,"127.0.0.1");
My_Svc_Handler *svchandler = new My_Svc_Handler();
MyConnector connector;
if(connector.connect(svchandler,addr) ==-1)
{
return 0;
}
while(1)
ACE_Reactor::instance()->handle_events();
return 0;
}
这段代码是能编译通过的。
我也学着这小例子写了一个。结果new 时就出了错。
提示是:
e:\vc7工程\项目一\client\复件client_v4.1f\client_v1\client_v1dlg.cpp(58): error C2661: “ACE_Svc_Handler<_ACE_PEER_STREAM,_ACE_SYNCH>::operator new” : 没有重载函数接受 3 个参数
with
[
_ACE_PEER_STREAM=ACE_SOCK_Stream,
_ACE_SYNCH=ACE_NULL_SYNCH
]
为什么上面那个例子行啊。
我另外写的那个用时new就不行了。 |
|