找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4781|回复: 1

如何通过同一个端口建立与多个sever的连接

[复制链接]
发表于 2008-5-21 22:47:00 | 显示全部楼层 |阅读模式
通过ace的connector建立与多个server的连接,如何保证非阻塞?
从他的论文集看到段代码,不知道怎么用?而且对于PEER_CONNECTOR,和HANDLE属于那个头文件?
  1. template <class SERVICE_HANDLER,class PEER_CONNECTOR>
  2. class AsyConnector:public Event_Handler
  3. {
  4. public:
  5. AsyConnector(void);
  6. ~AsyConnector(void);
  7.     enum Connect_Mode
  8.     {
  9.         SYNC, //以同步方式连接
  10.         ASYNC //以异步方式连接
  11.     };
  12. // 主动连接并激活服务处理器
  13.     int connect (SERVICE_HANDLER *sh,
  14.         const PEER_CONNECTOR::PEER_ADDR &addr,
  15.         Connect_Mode mode);
  16. protected:
  17.     //定义连接激活策略
  18.     virtual int connect_service_handler(SERVICE_HANDLER *sh,
  19.         const PEER_CONNECTOR::PEER_ADDR &addr,
  20.         Connect_Mode mode);
  21.     // Defines the handler's concurrency strategy.
  22.     virtual int activate_service_handler(SERVICE_HANDLER *sh);
  23.     // 当以异步方式连接完成时激活服务处理器
  24.     virtual int complete (HANDLE handle);
  25. //以下方法不是必须
  26. int register_handler(SERVICE_HANDLER* sh,Connect_Mode mode);
  27. private:
  28.     // IPC mechanism that establishes
  29.     // connections actively.
  30.     PEER_CONNECTOR connector_;
  31. Map_Manager<HANDLE, SERVICE_HANDLER *> handler_map_;
  32. virtual int handle_event(HANDLE handle,EVENT_TYPE type);
  33. };
复制代码

这里是不是意思通过一个connector发起多个连接,每个连接对应一个handler?
就是当客户端发起多个连接如何保证非阻塞。
eg
for (i=0;i<n;i++)
   client.connect(ServiceHandler,addr,connect mode);
这样当第一个连接阻塞时下面的连接就不会建立。
 楼主| 发表于 2008-5-21 22:47:32 | 显示全部楼层
connect可以设置参数,让他不阻塞
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-21 21:31 , Processed in 0.013207 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表