IOCP 받기 함수를 이렇게 만들어뒀는데,
SOCKET_ERROR 부분에서 WSA_IO_PENDING 이 나와야 하는데 2번 에러가 나오네요.
이게 이상한게 비주얼스튜디오에서 디버그로 실행시키면 이 에러가 안나오는데,
DEBUG폴더에서 실행파일만 실행시키면 (클라이언트 여러개 실행해보려고) 이렇게 나오네요.
에러코드 리스트에서는 거의 다 10000부터 시작하는데, 2번 에러는 뭔지 찾아봐도 안나오네요;
뭐가 잘못됐을까요? 비주얼스튜디오쪽하고 뭔가 관련있을거같은데;;
bool RecvPost(SockCtx *sockCtx)
{
int ret;
DWORD bytes = 0;
DWORD flag = 0;
ZeroMemory(&sockCtx->recvCtx->overlapped, sizeof(OVERLAPPED));
ret = WSARecv(sockCtx->socket,&(sockCtx->recvCtx->wsaBuf),1,
&bytes,&flag,&(sockCtx->recvCtx->overlapped),NULL);
TRACE("recvPostedn");
if(ret == SOCKET_ERROR)
{
ret = WSAGetLastError();
if(ret != WSA_IO_PENDING)
{
printf("RecvPost, not Pending Error : %dn", ret);
return 0;
}
}
return 1;
}
해당 소켓을 찾을 수 없다는 소리로 보이는 군요.
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 /* I/O error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Argument list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file number */
#define ECHILD 10 /* No child processes */
해당 내용은 헤더파일이 있는 디렉토리(폴더)의 "errno.h"를 참고하세요.