|
想构造一个连接池,里面存放ACE_Asynch_Connector派生类MY_Connector对象的指针。
连接池的初始化用如下方法循环100次,若不为NULL则插入连接池:addr_为服务器的地址和端口。
MY_Connector *p_tmp = new MY_Connector();
if(-1 != p_tmp->open())
{
if(-1 != p_tmp->connect(addr_))
{
return p_tmp;
}
else
{
delete p_tmp;
return NULL;
}
}
else
{
delete p_tmp;
return NULL;
}
每次程序都显示100个不为NULL的MY_Connector指针成功放入连接池,但用netstat察看网络连接状况,发现实际建立的连接只有7、80个。
而MY_Connector类也写了有效性判断:
int MY_Connector::validate_connection(
const ACE_Asynch_Connect::Result& result
, const ACE_INET_Addr &remote
, const ACE_INET_Addr& local)
{
if (!result.success())
{
ACE_DEBUG((LM_ERROR, ACE_TEXT("%p\n"), ACE_TEXT("validate_connection")));
return -1;
}
else
{
return 0;
}
}
问一下各位牛人,如何判断连接的有效性?我的程序问题出在何处?
另外,用Wireshark察看网络通讯情况发现失败的连接除了建立连接的三次握手之外,服务器都有RST消息返回。 |
|