100分ACE反应器的问题
#include "stdafx.h"
#define _WIN32_WINNT 0x0510
#include <ace/OS.h>
#include <ace/Reactor.h>
#include <ace/SOCK_Connector.h>
#include <string>
#include <iostream>
using namespace std;
#pragma comment(lib,"aced.lib")
class MyClient:public ACE_Event_Handler
{
public:
bool open(ACE_INET_Addr addr)
{
ACE_SOCK_Connector connector;
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 ";
char *a="caca";
peer.send(a,5);
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[rev]='\0';
cout<<endl<<"rev:\t"<<buffer<<endl;
}
return 3;
}
private:
ACE_SOCK_Stream peer;
char buffer[1024];
};
int main(int argc, char *argv[])
{
ACE_INET_Addr addr1(3001,"127.0.0.1");
ACE_INET_Addr addr(3000,"127.0.0.1");
MyClient client;
client.open(addr);
MyClient client;
client.open(addr1);
while(true)
{
ACE_Reactor::instance()->handle_events();
}
return 0;
}
连接两个服务器端,为什么只接收到一条回复信息?能修改好的加50