|
{ 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,这是为什么,有什么方法避免,高手指点一下??? |
|
|
|
帮你顶!
|
|