实例:本地有一个客户端,一个服务端。一个客户端接收远程发送的数据,服务端把客户端接收的数据转发给自己客户端。
问题:服务端与客户端有两种方案:1,通过一数据共享区;2,把数据发送到每一个客户服务的ace_msg_queue。方案1中怎么确定数据全部发送到每个客户?方案2怎么把数据放入ace_msg_queue。
说明:客户服务是在服务端上,每来一个连接将生成一个这个客户端的服务。
我的acceptor是这样的:
typedef ACE_Acceptor < CComAHAisServer, ACE_SOCK_ACCEPTOR > CClientAcceptor;
我想通过继承,重载handle_input以控制生成的CComAHAisServer的实例,然后可以调用putQ了,但是又不知道怎么继承哦?请高手指点!

最新回复
2、两个进程之间,没法直接操作对方的内存,只能用网络链接,进行转发。这就和普通的网络收发方式没有差别了。
希望能有所帮助。
所以我想充分地利用CComAHAisServer中的ACE_msg_queue,通过继承重写handle_input自己控制CComAHAisServer,当我的转接过来的数据放入每个CComAHAisServer实例的ace_msg_queue.可是我又不知道怎么继承ACE_Acceptor哦。
判断哪个链接发送有很多办法,比如协议里面表明白,要么根据IP
class CComAHAisServer: public ACE_Svc_Handler < ACE_SOCK_STREAM, ACE_NULL_SYNCH >
{
typedef ACE_Svc_Handler < ACE_SOCK_STREAM, ACE_NULL_SYNCH > Super;
public:
CComAHAisServer(void);
public:
~CComAHAisServer(void);
virtual int Open(void * =0);
virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE );
virtual int handle_output (ACE_HANDLE fd = ACE_INVALID_HANDLE );
virtual int handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask );
};
Open != open
你太马虎了哦。