如何通过同一个端口建立与多个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);
这样当第一个连接阻塞时下面的连接就不会建立。 connect可以设置参数,让他不阻塞
页:
[1]