winston 发表于 2008-5-21 22:47:00

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

通过ace的connector建立与多个server的连接,如何保证非阻塞?
从他的论文集看到段代码,不知道怎么用?而且对于PEER_CONNECTOR,和HANDLE属于那个头文件?

template <class SERVICE_HANDLER,class PEER_CONNECTOR>
class AsyConnector:public Event_Handler
{
public:
AsyConnector(void);
~AsyConnector(void);
    enum Connect_Mode
    {
      SYNC, //以同步方式连接
      ASYNC //以异步方式连接
    };
// 主动连接并激活服务处理器
    int connect (SERVICE_HANDLER *sh,
      const PEER_CONNECTOR::PEER_ADDR &addr,
      Connect_Mode mode);
protected:
    //定义连接激活策略
    virtual int connect_service_handler(SERVICE_HANDLER *sh,
      const PEER_CONNECTOR::PEER_ADDR &addr,
      Connect_Mode mode);
    // Defines the handler's concurrency strategy.
    virtual int activate_service_handler(SERVICE_HANDLER *sh);
    // 当以异步方式连接完成时激活服务处理器
    virtual int complete (HANDLE handle);
//以下方法不是必须
int register_handler(SERVICE_HANDLER* sh,Connect_Mode mode);
private:
    // IPC mechanism that establishes
    // connections actively.
    PEER_CONNECTOR connector_;
Map_Manager<HANDLE, SERVICE_HANDLER *> handler_map_;
virtual int handle_event(HANDLE handle,EVENT_TYPE type);
};


这里是不是意思通过一个connector发起多个连接,每个连接对应一个handler?
就是当客户端发起多个连接如何保证非阻塞。
eg
for (i=0;i<n;i++)
   client.connect(ServiceHandler,addr,connect mode);
这样当第一个连接阻塞时下面的连接就不会建立。

winston 发表于 2008-5-21 22:47:32

connect可以设置参数,让他不阻塞
页: [1]
查看完整版本: 如何通过同一个端口建立与多个sever的连接