为什么FD_READ事件会比FD_CLOSE 事件多出来,请高手指点,谢了先!

ThroughOut 2003-10-16 01:05:45
void CListenSocket::OnAccept(int nErrorCode)
{
SOCKADDR asock;
int length=sizeof(SOCKADDR);
memset(&asock,0,sizeof(SOCKADDR));
if (nErrorCode == 0)
{
if (CReceiveSocket::SocketsCount >= MAX_RECV_SOCKET_NUM)
{
CAsyncSocket RejectionSocket;
string strMsg = "Too many connections, try again later.";
Accept(RejectionSocket);
RejectionSocket.Send(strMsg.c_str(), strMsg.length());
RejectionSocket.Close();
}
else
{

CReceiveSocket *pReceiveSocket = CReceiveSocket::Create();
if(Accept(*pReceiveSocket,&asock,&length))
{
AsyncSelect(FD_READ|FD_ACCEPT|FD_CLOSE);
}

}
}
}

///
void CReceiveSocket::OnClose(int nErrorCode)
{
char ss[10];
Close();
delete this;
SocketsCount--;
CloseCount++;
}


我现在的问题是程序接收数据一段时间后,Receive Socket不工作了,经调试发现CReceiveSocket::SocketsCount >MAX_RECV_SOCKET_NUM,我的FD_CLOSE事件竟然比FD_ACCEPT实践少MAX_RECV_SOCKET_NUM,这是为什么,有什么方法避免,高手指点一下???
...全文
51 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bb123456789 2003-10-16
  • 打赏
  • 举报
回复
帮你顶!
Re:CCNA_CCNP 思科网络认证 动态路由 EIGRP 和 OSPF 协议======================# EIGRP协议特点(CISCO产品专用独家协议) 使用Hello消息发现邻居,然后交换路由信息,使用Hello包维持邻居表 代替其它动态协议周期性更新而消耗资源。 有备用路径,当最佳路径不可用,立即使用备用路径 备用路径比动态获取新路径效率更高。 度量值默认为带宽和延迟,也可以添加负载和可靠性以及最大传输单元(MTU) rip只是hops跳数为依据,使用带宽和延时为指标更合理 还可以负载、可靠性和MTU为依据,选择最佳路径。 默认支持4条链路的不同代价的负载均衡,可以更改为最多6条 最大跳数为255(默认是100跳) rip只有15hops,所有只能够使用在小型网络中。 触发式更新路由表,即网络发生变化时,增量更新 hello包和触发式结合,消耗设置资源更低 支持路由的自动汇总。 支持大的网络,可以使用自制系统号来区别可共享路由信息的路由器集合,路由信息只可以在拥有相同自制系统号的路由器间共享。 (即一片路由和另一片路由,不计划发布沟通的情况下,可以以系统号区分) 如同VLAN方式 管理距离是90 直连0静态路由1;rip协议120;EIGRP协议90(比rip优级高) # EIGRP度量值 EIGRP度量值 带宽 延迟 可靠性 负载 最大路径和跳数 默认支持4条等价路径 最大跳数100,也可以设置成255 # EIGRP三张表 邻居关系表 拓扑表 路由表 # EIGRP专业术语 可行距离(FD)                :A到E最小开销的路径(最佳路径) 被通告距离(AD)            :A的前一个路由器,到E的开销 继任者(最佳路径)          :可行路径下一跳的路由器 可行的继任者(备用路径):被通告距离 ---------------------------------------------------------------------------------------# 介绍OSPF协议 开放最短路径优(OSPF)是一个开放标准的路由选择协议,它被各种网络开发商所广泛使用。 即无厂家边界 # OSPF协议具有下列特性: 由区域和自治系统组成 最小化的路由更新的流量(触发式更新,平时hello包打招呼,类eigrp协议) 允许可缩放性 支持变VLSM和CIDR(五类间路由/23) 拥有不受限的跳数 允许多销售商的设备集成(开放的标准) 度量值是带宽 # OSPF术语 Router-ID(网络中的身份:取ip最大值) 网络中运行OSPF协议的路由器都要有一个唯一的标识,这就是Router-ID,并且Router-ID在网络中绝对不可以有重复。 COST(开销) OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的,就是最佳路径。 链路(Link) 就是路由器上的接口,在这里,应该指运行在OSPF进程下的接口。 链路状态(Link-State) 链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA)。 邻居(Neighbor) 两台或多台运行OSPF的路由器在一个公共的网络上形成的基本关系。 但是不一定交换信息 邻接(Adjacency) OSPF只有邻接状态才交换LSA。 只有发生交换数据关系的设备间叫做邻接 邻居间选择一个交通站DR,负责邻居间交换数据--------------------------------------------------------------------------------------- # 在边界路由器通过再发布方式向内部网段传递默认路由 两个不同协议自治区:RIP 和 EIGRP 路由再发布 两个不同协议自治区:OSPF 和 EIGRP 路由再发布 两个不同协议自治区:OSPF 和 RIP 路由再发布------------------------------------------------------------------                

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧