入门者求教:怎样用ACE实现一个客户端的多个socket连接?
ACE刚入门,很多东西还没搞清楚.现在想在一个客户端中实现多个socket的连接,请问该怎么做?
能给点示例代码,是最好的,万分感谢! #include <ace/OS.h>
#include <ace/Reactor.h>
#include <ace/SOCK_Connector.h>
#include <string>
#include <iostream>
using namespace std;
class MyClient:public ACE_Event_Handler
{
public:
bool open()
{
ACE_SOCK_Connector connector;
ACE_INET_Addr addr(3000,"127.0.0.1");
ACE_Time_Value timeout(5,0);
if(connector.connect(peer,addr,&timeout) != 0)
{
cout<<endl<<"connecetd fail";
return false;
}
ACE_Reactor::instance()->register_handler(this,ACE_Event_Handler::READ_MASK);
cout<<endl<<"connecetd ";
return true;
}
ACE_HANDLE get_handle(void) const
{
return peer.get_handle();
}
int handle_input (ACE_HANDLE fd)
{
int rev=0;
ACE_Time_Value timeout(5,0);
if((rev=peer.recv(buffer,1000,&timeout))>0)
{
buffer='\0';
cout<<endl<<"rev:\t"<<buffer<<endl;
}
return 3;
}
private:
ACE_SOCK_Stream peer;
char buffer;
};
class MyClient2:public ACE_Event_Handler {
...
};
int main(int argc, char *argv[])
{
MyClient1 client1;
client1.open();
MyClient2 client2;
client2.open();
while(true)
{
ACE_Reactor::instance()->handle_events();
}
return 0;
} Joe,你好!
我的连接数目是不确定的,是根据一个统一服务器传回的各子服务器个数而动态确定的.
能否有新的解决方案?
万分感谢! 那就NEW多个MyClient啊;
如果需要连接其他服务器端口open定义为:open(const ACE_INET_Addr &listen_addr);
不知道可以不? 可以,非常感谢!!!!!
页:
[1]