다중 쓰레드 프로그램일 경우 모든 쓰레드의 소켓에 대해 에러값을 측정한다. 이 경우 어느 쓰레드의 소켓함수 호출에서 에러가 발생한 건지 명확하지 않을 수 있다. 특정한 윈도 소켓에 에러가 발생하면, 그에 적절한 에러코드를 확인해서 반환한다. getsockopt()함수를 SO_ERROR 매개변수로 호출한 에러코드와는 다를 수 있다.
특정 소켓함수가 성공했다고 해서, 가장 최근의 소켓에러값이 리셋되지 않는다. 에러코드를 리셋하려면 WSAGetLastError 함수의 iError매개변수를 0으로 호출 해야 한다.
비동기 네트워크로 메시지로에서 IParam매게변수로 전달되는 에러 값은 WSAGetLastError과 다를 수 있다.
에러코드 종류
이름
값
설명
WSA_INVALID_HANDLE
6
지정된 이벤트 객체 핸들이 잘못 되었다.
WSA_NOT_ENOUGH_MEMORY
8
메모리가 충분하지 않다.
WSA_INVALID_PARAMETER
87
하나 이상의 잘못된 인자가 사용됐다.
WSA_OPERATION_ABORTED
995
overlapped(:12) 연산이 중단 되었다.
WSA_IO_INCOMPLETE
996
Overlapped 입출력 이벤트가 신호 상태가 아니다.
WSA_IO_PENDING
997
Overlapped 연산은 나중에 완료될 것이다. 중첩 연산을 위한 준비가 되었으나, 즉시 완료되지 않았을 경우발생
WSAEINTR
10004
WSACancelBlockingCall()에 의해 블록화 호출이 취소: Interrupted system call
WSAEBADF
10009
잘못된 파일 기술자가 사용되었음
WSAEACCES
10013
요청한 주소가 브로드캐스트 주소인데 setsockopt()로 SO_BROADCAST 가 설정되지 않았다.
WSAEFAULT
10014
잘못된 주소를 사용했음
WSAEINVAL
10022
바인딩 실패. 이미 bind된 소켓에 바인드하거나 주소체계가 일관적이지 않을 때
WSAEMFILE
10024
너무 많은 파일이 열려있음
WSAEWOULDBLOCK
10035
non overlapped 소켓 : 비 봉쇄 소켓에 아직 읽을 데이터가 없음, overlapped(:12) 소켓 : 너무 많은 중첩 입출력 요구가 있음
WSAEINPROGRESS
10036
블록화 함수가 진행되는 동안 부적절한 윈속 API함수가 호출.
WSAEALREADY
10037
비봉쇄모드 소켓에서 아직 진행중인 작업임. (connect가 완료되지 않은 상태에서 connect 함수의 호출등..)
WSAENOTSOCK
10038
잘못된 소켓기술자를 사용했음
WSAEDESTADDRREQ
10039
목적지 주소를 명시하지 않았음
WSAEMSGSIZE
10040
송수신에 사용된 데이터가 버퍼의 크기를 초과해서 크기에 맞게 잘렸음
WSAEPROTOTYPE
10041
소켓에 맞지 않는 프로토콜을 사용했음
WSAENOPROTOOPT
10042
잘못된 옵션을 사용했음. 지원되지 않는 옵션으로 getsockopt함수를 호출하는 등.
WSAEPROTONOSUPPORT
10043
윈속에서 지원하지 않는 주소체계를 사용했음
WSAESOCKTNOSUPPORT
10044
소켓타입이 지원하지 않는 주소체계를 사용했음
WSAEOPNOTSUPP
10045
소켓이 지원하지 않는 명령을 사용했음. listen()함수를 데이터그램 통신 (SO_DGRAM)에서 호출
WSAEPFNOSUPPORT
10046
지원하지 않는 프로토콜을 사용했음
WSAEAFNOSUPPORT
10047
윈속에서 지원하지 않는 주소체계를 사용했음
WSAEADDRINUSE
10048
지정된 주소가 이미 사용 중임
WSAEADDRNOTAVAIL
10049
사용할 수 없는 주소임
WSAENETDOWN
10050
네트워크 서브 시스템에 문제가 있음. 네트워크 접속 끊김등.
WSAENETUNREACH
10051
네크워크에 접근할 수 없음
WSAENETRESET
10052
네트워크 재설정으로 연결이 끊어졌음.
WSAECONNABORTED
10053
타임아웃 혹은 상대방의 접속종료들과 같은 소프트웨어적인 문제로 연결이 끊겼음.
WSAECONNRESET
10054
연결이 원격 호스트에 의해 재설정되었음.
WSAENOBUFS
10055
남아있는 버퍼공간이 없어서 소켓을 사용할 수 없음
WSAEISCONN
10056
이미 연결이 완료된 소켓임. connect로 연결이 완료된 소켓에 다시 connect를 시도할 경우
WSAENOTCONN
10057
연결되지 않은 소켓임. 연결되지 않은 소켓에 읽고 쓰는 경우
WSAESHUTDOWN
10058
소켓이 종료되었음. 종료된 소켓에 데이터를 읽고 쓰려 경우
WSAETOOMANYREFS
10059
Too many references
WSAETIMEDOUT
10060
접속시도 제한 시간 초과
WSAECONNREFUSED
10061
서버가 연결시도를 거절함. 수신 대기열이 가득찬 상태에서 클라이언트의 connect 호출이 있을 경우
WSAELOOP
10062
너무 많은 심볼릭링크가 사용되었음
WSAENAMETOOLONG
10063
파일이름이 너무 김
WSAEHOSTDOWN
10064
호스트 다운
WSAEHOSTUNREACH
10065
호스트로의 경로를 설정할 수 없음
WSAENOTEMPTY
10066
네트워크 서브시스템이 아직 통신할 준비가 되어 있지 않음. WSAStartup에 의해 반환
WSAGetLastError함수
매개변수
반환 값
설명
에러코드 종류
Recent Posts
Archive Posts
Tags