ACE怎么链接多个服务器,怎么给服务器重复发送信息
[code=C/C++][/code]
//-------------client
int _connect(ACE_SOCK_Stream peer)
{
char *buf = "ok there";
ACE_Time_Value timeout (10);
if (peer.send_n (buf, 9, &timeout) == -1) return 1;
std::cout << "send ok" << std::endl;
}
int main(int argc, char *argv[])
{
const char *server_hostname = "127.0.0.1";
ACE_SOCK_Connector connector, connector2;
ACE_SOCK_Stream peer;
ACE_INET_Addr peer_addr;
char *buf = "ok there";
if (peer_addr.set (8000, server_hostname) == -1) {
perror("1");
return 1;
}
else if (connector.connect (peer, peer_addr) == -1)
{
perror("2");
return 1;
}
_connect(peer);
_connect(peer);
if (peer_addr.set (9888, server_hostname) == -1) {
perror("1");
return 1;
}
else if (connector2.connect (peer, peer_addr) == -1)
{
perror("2");
return 1;
}
_connect(peer);
return 0;
}
//-----------server
int main(int argc, char *argv[])
{
ACE_INET_Addr server_addr;
ACE_SOCK_Acceptor acceptor;
ACE_SOCK_Stream peer;
if (server_addr.set (8000) == -1) return 1;// server2 is 9888
if (acceptor.open (server_addr) == -1) return 1;
char buf[64] = {0};
int size = 64;
while(1){
if (acceptor.accept (peer) == -1) return 1;
std::cout<< "----accept----" << std::endl;
peer.disable (ACE_NONBLOCK);
if (peer.recv_n (buf, size) == -1) return 1;
std::cout<< buf << std::endl;
}
return acceptor.close() == -1 ? 1 : 0;
}
我想同时保存多个对服务器都链接,随时可以向每个服务器发送信息,但是第2个服务器收不到信息,只有第一个能收到,是不是服务端哪里有问题?怎么保存跟每个服务器都链接,C的话只用保存socket就是了
还有就是第1个服务器我连续发了两次信息,但只能收到一次,这是怎么回事?
[解决办法]
客户端只定义了一个ACE_SOCK_Stream,哎,建议你看看ace自带的例子吧,那里面简单的demo都有