首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ACE如何链接多个服务器,如何给服务器重复发送信息

2012-04-02 
ACE怎么链接多个服务器,怎么给服务器重复发送信息[codeC/C++][/code]//-------------clientint _connect(

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都有

热点排行