为什么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,这是为什么,有什么方法避免,高手指点一下???
...全文
54 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bb123456789 2003-10-16
  • 打赏
  • 举报
回复
帮你顶!

18,356

社区成员

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

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