안녕하세요 iocp 서버만들때 클라이언트가 연결을 끊었을경우 어떤이벤트가 발생하는지... 아래코드에서보면 if(dwBytesTrans == 0) // 전송받은 것이 없다면 클라이언트가 종료한 경우 이경우가 클라이언트가 종료시의경우인데 bRet 가 false 이고 ErrorCode = GetLastError(); if (ERROR_NETNAME_DELETED == ErrorCode) 인경우도 클라이언트의 연결이 끊어진경우라고하던데 이두경우의 차이점이 뭔가여? bRet = GetQueuedCompletionStatus(pIOCP->m_hIOCP, &dwBytesTrans, reinterpret_cast<ULONG_PTR*>(&pClient), reinterpret_cast<LPOVERLAPPED*>(&pIO), INFINITE); if(bRet) // 에러상태를 점금한다 { if((ULONG_PTR)pClient == THREAD_DIE) // 스레드 강제종료 { int ErrCode = WSAGetLastError(); TRACE("IOCP 스레드 강제종료: %d\n", ErrCode); //pIOCP->CloseClient(pClient, FALSE); return FALSE; } } else { ErrorCode = GetLastError(); if (ERROR_NETNAME_DELETED == ErrorCode) { } continue; } if(dwBytesTrans == 0) // 전송받은 것이 없다면 클라이언트가 종료한 경우 { continue; } |