윈도우 소켓 에러코드 정리

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

윈도우 소켓 오류코드를 정리해 보았습니다. 소켓 오류코드를 정확히 알고 있어야 어떤 상황에서 발생하는 오류코드 인지 확인이 가능하고 그에 맞는 조치를 취할 수 있습니다. 글 아래쪽에서는 평상시 개발하다 발생할 수 있는 자주 발생하는 에러코드만 별도로 정리해보았습니다.

윈도우 소켓 에러코드와 오류 명칭 정리

소켓통신 개발을 하다보면 윈도우 소켓 오류 발생시 보통 오류코드를 알 수 있습니다. 윈도우 시스템에 정의된 오류코드는 굉장히 많은 종류가 있는데, 일반적인 경우 많이 보는 코드들은 정해져 있습니다.

  • 흔하게 접하게 되는 오류 코드는 따로 색상을 지정하여 표시됨.
에러코드에러코드 명칭에러코드 설명
6WSA_INVALID_HANDLE지정된 이벤트 개체 핸들이 잘못되었습니다. 애플리케이션이 이벤트 개체를 사용하려고 하지만 지정된 핸들이 잘못되었습니다.
8WSA_NOT_ENOUGH_MEMORY사용 가능한 메모리가 부족합니다. 애플리케이션은 Windows 함수에 직접 매핑되는 Windows 소켓 함수를 사용했습니다. Windows 함수는 필요한 메모리 리소스가 없음을 나타냅니다.
87WSA_INVALID_PARAMETER하나 이상의 매개 변수가 잘못되었습니다. 애플리케이션은 Windows 함수에 직접 매핑되는 Windows 소켓 함수를 사용했습니다. Windows 함수는 하나 이상의 매개 변수에 문제가 있음을 나타냅니다.
995WSA_OPERATION_ABORTED겹치는 작업이 중단되었습니다. 소켓의 닫기 또는 WSAIoctl에서 SIO_FLUSH 명령 실행으로 인해 겹치는 작업이 취소되었습니다.
996WSA_IO_INCOMPLETE겹치는 I/O 이벤트 개체가 신호 상태가 아닙니다. 애플리케이션은 아직 완료되지 않은 겹치는 작업의 상태 확인하려고 했습니다. 폴링 모드에서 WSAGetOverlappedResult ( fWait 플래그가 FALSE로 설정됨)를 사용하여 겹치는 작업이 완료된 시기를 결정하는 애플리케이션은 작업이 완료될 때까지 이 오류 코드를 가져옵니다.
997WSA_IO_PENDING겹치는 작업은 나중에 완료됩니다. 애플리케이션에서 즉시 완료할 수 없는 겹쳐진 작업을 시작했습니다. 작업이 완료되면 나중에 완료 표시가 제공됩니다.
10004WSAEINTR함수 호출이 중단되었습니다. WSACancelBlockingCall 호출로 인해 차단 작업이 중단되었습니다.
10009WSAEBADF파일 핸들이 잘못되었습니다. 제공된 파일 핸들이 잘못되었습니다.
10013WSAEACCES사용 권한이 거부되었습니다. 액세스 권한에 의해 금지된 방식으로 소켓에 액세스하려고 시도했습니다. 예를 들어 setockopt(SO_BROADCAST)를 사용하여 브로드캐스트 권한을 설정하지 않고 sendto에 대한 브로드캐스트 주소를 사용하는 것입니다. WSAEACCES 오류의 또 다른 가능한 이유는 바인딩 함수가 호출될 때(SP4 이상에서 Windows NT 4.0에서) 다른 애플리케이션 서비스 또는 커널 모드 드라이버가 단독 액세스 권한이 있는 동일한 주소에 바인딩된다는 것입니다. 이러한 단독 액세스는 SP4 이상에서 Windows NT 4.0의 새로운 기능이며 SO_EXCLUSIVEADDRUSE 옵션을 사용하여 구현됩니다.
10014WSAEFAULT잘못된 주소입니다. 시스템에서 호출의 포인터 인수를 사용하려고 할 때 잘못된 포인터 주소를 검색했습니다. 이 오류는 애플리케이션이 잘못된 포인터 값을 전달하거나 버퍼 길이가 너무 작은 경우에 발생합니다. instance 경우 sockaddr 구조체인 인수의 길이가 sizeof(sockaddr)보다 작습니다.
10022WSAEINVAL인수가 잘못되었습니다. 일부 잘못된 인수가 제공되었습니다(예: setsockopt 함수에 잘못된 수준 지정). 경우에 따라 수신 대기하지 않는 소켓에서 수락을 호출하는 instance 소켓의 현재 상태를 나타냅니다.
10024WSAEMFILE열려 있는 파일이 너무 많습니다. 열린 소켓이 너무 많습니다. 각 구현에는 전역적으로 프로세스당 또는 스레드당 사용 가능한 최대 소켓 핸들 수가 있을 수 있습니다.
10035WSAEWOULDBLOCK리소스를 일시적으로 사용할 수 없습니다. 이 오류는 즉시 완료할 수 없는 비블로킹 소켓 작업(예: 소켓에서 읽을 데이터가 큐에 대기되지 않은 경우 ) 에서 반환됩니다. 심각하지 않은 오류이며 나중에 작업을 다시 시도해야 합니다. 연결이 설정되려면 시간이 경과해야 하므로 WSAEWOULDBLOCK이 비블로킹 SOCK_STREAM 소 켓에서 연결을 호출한 결과로 보고되는 것이 정상입니다.
10036WSAEINPROGRESS작업이 진행 중입니다. 차단 작업이 진행 중입니다. Windows 소켓은 단일 차단 작업(작업 또는 스레드당)만 미해결되도록 허용하며 다른 함수 호출이 수행되는 경우(해당 소켓 또는 다른 소켓을 참조하는지 여부에 관계없이) WSAEINPROGRESS 오류로 인해 함수가 실패합니다.
10037WSAEALREADY작업이 이미 진행 중입니다. 작업이 이미 진행 중인 비 차단 소켓에서 작업이 시도되었습니다. 즉 이미 연결 중인 비 차단 소켓에서 두 번째로 연결을 호출하거나 이미 취소되거나 완료된 비동기 요청(WSAAsyncGetXbyY)을 취소합니다.
10038WSAENOTSOCKnonsocket에 대한 소켓 작업입니다. 소켓이 아닌 항목에서 작업을 시도했습니다. 소켓 핸들 매개 변수가 유효한 소켓을 참조하지 않았거나 선택 항목의 경우 fd_set 멤버가 잘못되었습니다.
10039WSAEDESTADDRREQ대상 주소가 필요합니다. 소켓 작업에서 필수 주소가 생략되었습니다. 예를 들어 이 오류는 sendto 가 ADDR_ANY 원격 주소로 호출되는 경우 반환됩니다.
10040WSAEMSGSIZE메시지가 너무 깁니다. 데이터그램 소켓에서 보낸 메시지가 내부 메시지 버퍼 또는 다른 네트워크 제한보다 크거나 데이터그램을 수신하는 데 사용되는 버퍼가 데이터그램 자체보다 작습니다.
10041WSAEPROTOTYPE소켓의 프로토콜 유형이 잘못되었습니다. 프로토콜은 요청된 소켓 유형의 의미 체계를 지원하지 않는 소켓 함수 호출에서 지정되었습니다. 예를 들어 ARPA 인터넷 UDP 프로토콜은 소켓 형식의 SOCK_STREAM 지정할 수 없습니다.
10042WSAENOPROTOOPT잘못된 프로토콜 옵션입니다. 알 수 없거나 유효하지 않거나 지원되지 않는 옵션 또는 수준이 getsockopt 또는 setsockopt 호출에 지정되었습니다.
10043WSAEPROTONOSUPPORT프로토콜이 지원되지 않습니다. 요청된 프로토콜이 시스템에 구성되지 않았거나 이에 대한 구현이 없습니다. 예를 들어 소켓 호출은 SOCK_DGRAM 소켓을 요청하지만 스트림 프로토콜을 지정합니다.
10044WSAESOCKTNOSUPPORT소켓 유형은 지원되지 않습니다. 이 주소 패밀리에서는 지정된 소켓 형식이 지원되지 않습니다. 예를 들어 선택적 형식 SOCK_RAW 소켓 호출에서 선택될 수 있으며 구현은 SOCK_RAW 소켓을 전혀 지원하지 않습니다.
10045WSAEOPNOTSUPP작업이 지원되지 않습니다. 시도한 작업은 참조된 개체 형식에 대해 지원되지 않습니다. 일반적으로 이 작업은 이 작업을 지원할 수 없는 소켓에 대한 소켓 설명자가 데이터그램 소켓의 연결을 수락하려고 할 때 발생합니다.
10046WSAEPFNOSUPPORT프로토콜 패밀리는 지원되지 않습니다. 프로토콜 제품군이 시스템에 구성되지 않았거나 이에 대한 구현이 없습니다. 이 메시지는 WSAEAFNOSUPPORT와 약간 다른 의미를 줍니다. 그러나 대부분의 경우 서로 교환할 수 있으며 이러한 메시지 중 하나를 반환하는 모든 Windows 소켓 함수는 WSAEAFNOSUPPORT도 지정합니다.
10047WSAEAFNOSUPPORT프로토콜 패밀리에서 지원되지 않는 주소 패밀리입니다. 요청한 프로토콜과 호환되지 않는 주소가 사용되었습니다. 모든 소켓은 연결된 주소 패밀리(즉 인터넷 프로토콜의 경우 AF_INET) 및 일반 프로토콜 유형(즉 SOCK_STREAM)을 사용하여 만들어집니다. 이 오류는 소켓 호출에서 잘못된 프로토콜이 명시적으로 요청되거나 잘못된 패밀리의 주소가 소켓(예: sendto)에 사용되는 경우 반환됩니
10048WSAEADDRINUSE이미 사용 중인 주소입니다. 일반적으로 각 소켓 주소(프로토콜/IP 주소/포트)의 사용은 하나만 허용됩니다. 이 오류는 애플리케이션이 기존 소켓에 이미 사용된 IP 주소/포트 또는 제대로 닫히지 않은 소켓 또는 아직 닫고 있는 소켓에 소켓을 바인딩 하려고 시도하는 경우에 발생합니다. 여러 소켓을 동일한 포트 번호에 바인딩 해야 하는 서버 애플리케이션의 경우 setsockopt (SO_REUSEADDR)를 사용하는 것이 좋습니다. 클라이언트 애플리케이션은 일반적으로 바인딩 을 전혀 호출할 필요가 없습니다. 연결 은 사용하지 않는 포트를 자동으로 선택합니다. 와일드카드 주소(ADDR_ANY 포함)를 사용하여 바인딩 을 호출하면 특정 주소가 커밋될 때까지 WSAEADDRINUSE 오류가 지연될 수 있습니다. 나중에 연결 수신 대기 WSAConnect 또는 WSAJoinLeaf를 비롯한 다른 함수를 호출할 때 발생할 수 있습니다.
10049WSAEADDRNOTAVAIL요청된 주소를 할당할 수 없습니다. 요청한 주소가 해당 컨텍스트에서 잘못되지 않음 이는 일반적으로 로컬 컴퓨터에 유효하지 않은 주소에 바인딩 하려는 시도에서 발생합니다. 원격 주소 또는 포트가 원격 컴퓨터(예: 주소 또는 포트 0)에 유효하지 않은 경우 연결 sendto WSAConnect WSAJoinLeaf 또는 WSASendTo 에서 발생할 수도 있습니다.
10050WSAENETDOWN네트워크가 다운되었습니다. 소켓 작업에서 작동하지 않는 네트워크가 검색되었습니다. 네트워크 시스템(Windows Sockets.dll이 작동하는 프로토콜 스택) 네트워크 인터페이스 또는 로컬 네트워크에 문제가 발생했을 수 있습니다.
10051WSAENETUNREACH네트워크에 연결할 수 없습니다. 연결할 수 없는 네트워크에서 소켓 작업을 시도했습니다. 이는 일반적으로 로컬 소프트웨어가 원격 호스트에 연결할 경로를 알 수 없음을 의미합니다.
10052WSAENETRESET다시 설정할 때 네트워크 연결이 끊어지게 됩니다. 해당 작업이 진행되는 동안 오류가 발생하여 연결이 끊겼습니다. 이미 실패한 연결에서 SO_KEEPALIVE 설정하려고 시도하는 경우 setsockopt에서 반환할 수도 있습니다.
10053WSAECONNABORTED소프트웨어로 인해 연결이 중단되었습니다. 데이터 전송 시간 제한 또는 프로토콜 오류로 인해 호스트 컴퓨터의 소프트웨어에 의해 설정된 연결이 중단되었습니다.
10054WSAECONNRESET피어별 연결 다시 설정. 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다. 일반적으로 원격 호스트의 피어 애플리케이션이 갑자기 중지되거나 호스트가 다시 부팅되거나 호스트 또는 원격 네트워크 인터페이스가 비활성화되거나 원격 호스트가 하드 닫기를 사용하는 경우 발생합니다(원격 소켓의 SO_LINGER 옵션에 대한 자세한 내용은 setsockopt 참조). 이 오류는 하나 이상의 작업이 진행 중인 동안 실패를 감지하는 연결 유지 활동으로 인해 연결이 끊어진 경우에도 발생할 수 있습니다. 진행 중인 작업이 WSAENETRESET으로 실패합니다. WSAECONNRESET에서 후속 작업이 실패합
10055WSAENOBUFS사용할 수 있는 버퍼 공간이 없습니다. 시스템에 충분한 버퍼 공간이 부족하거나 큐가 가득 차서 소켓에서 작업을 수행할 수 없습니다.
10056WSAEISCONN소켓이 이미 연결되어 있습니다. 이미 연결된 소켓에서 연결 요청이 이루어졌습니다. 또한 일부 구현에서는 sendto가 연결된 SOCK_DGRAM 소켓에서 호출되는 경우에도 이 오류를 반환합니다(SOCK_STREAM 소켓의 경우 sendto의 to 매개 변수는 무시됨).
10057WSAENOTCONN소켓이 연결되어 있지 않습니다. 소켓이 연결되지 않았고( sendto를 사용하여 데이터그램 소켓을 보낼 때) 주소가 제공되지 않았기 때문에 데이터를 보내거나 받는 요청이 허용되지 않았습니다. 다른 유형의 작업도 이 오류를 반환할 수 있습니다. 예를 들어 연결이 다시 설정되면 setockopt 설정 SO_KEEPALIVE
10058WSAESHUTDOWN소켓 종료 후에는 보낼 수 없습니다. 소켓이 이전 종료 호출을 통해 해당 방향으로 이미 종료되었기 때문에 데이터를 보내거나 받는 요청이 허용되지 않았습니다. 종료를 호출하여 소켓의 부분 닫기를 요청합니다. 이는 송신 또는 수신 중이거나 둘 다 중단되었다는 신호입니다.
10059WSAETOOMANYREFS참조가 너무 많습니다. 일부 커널 개체에 대한 참조가 너무 많습니다.
10060WSAETIMEDOUT연결 시간이 초과되었습니다. 연결된 당사자가 일정 기간 후에 제대로 응답하지 않았거나 연결된 호스트가 응답하지 않아 설정된 연결이 실패했기 때문에 연결 시도가 실패했습니다.
10061WSAECONNREFUSED연결이 거부되었습니다. 대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다. 이는 일반적으로 서버 애플리케이션이 실행되지 않는 외부 호스트에서 비활성 상태인 서비스에 연결하려고 시도하기 때문에 발생합니다.
10062WSAELOOP이름을 번역할 수 없습니다. 이름을 번역할 수 없습니다.
10063WSAENAMETOOLONG이름이 너무 깁니다. 이름 구성 요소 또는 이름이 너무 깁니다.
10064WSAEHOSTDOWN호스트가 다운되었습니다. 대상 호스트가 다운되어 소켓 작업이 실패했습니다. 소켓 작업에서 호스트가 중지되었습니다. 로컬 호스트의 네트워킹 작업이 시작되지 않았습니다. 이러한 조건은 WSAETIMEDOUT 오류로 표시될 가능성이 높습니다.
10065WSAEHOSTUNREACH호스트할 경로가 없습니다. 연결할 수 없는 호스트로 소켓 작업을 시도했습니다. WSAENETUNREACH를 참조하세요.
10066WSAENOTEMPTY디렉터리가 비어 있지 않습니다. 비어 있지 않은 디렉터리는 제거할 수 없습니다.
10067WSAEPROCLIM프로세스가 너무 많습니다. Windows 소켓 구현은 동시에 사용할 수 있는 애플리케이션 수에 제한이 있을 수 있습니다. 제한에 도달한 경우 이 오류로 인해 WSAStartup이 실패할 수 있습니다.
10068WSAEUSERS사용자 할당량을 초과했습니다. 사용자 할당량이 부족합니다.
10069WSAEDQUOT디스크 할당량을 초과했습니다. 디스크 할당량이 부족합니다.
10070WSAESTALE부실 파일 핸들 참조입니다. 파일 핸들 참조를 더 이상 사용할 수 없습니다.
10071WSAEREMOTE항목이 원격입니다. 항목을 로컬로 사용할 수 없습니다.
10091WSASYSNOTREADY네트워크 하위 시스템을 사용할 수 없습니다. 이 오류는 네트워크 서비스를 제공하는 데 사용하는 기본 시스템을 현재 사용할 수 없으므로 현재 Windows 소켓 구현이 작동하지 않는 경우 WSAStartup 에서 반환됩니다. 사용자는 다음을 검사 합니다. 적절한 Windows 소켓 DLL 파일이 현재 경로에 있는지 확인합니다.둘 이상의 Windows 소켓 구현을 동시에 사용하려고 하지 않습니다. 시스템에 Winsock DLL이 두 개 이상 있는 경우 경로의 첫 번째 DLL이 현재 로드된 네트워크 하위 시스템에 적합한지 확인합니다. 필요한 모든 구성 요소가 현재 설치되고 올바르게 구성되어 있는지 확인하기 위한 Windows 소켓 구현 설명서입니다.
10092WSAVERNOTSUPPORTEDWinsock.dll 버전이 범위를 벗어났습니다. 현재 Windows 소켓 구현은 애플리케이션에서 요청한 Windows 소켓 사양 버전을 지원하지 않습니다. 이전 Windows 소켓 DLL 파일에 액세스하고 있지 않은지 확인하십시오.
10093WSANOTINITIALISEDWSAStartup이 아직 수행되지 않았습니다. 애플리케이션이 WSAStartup 을 호출하지 않았거나 WSAStartup 이 실패했습니다. 애플리케이션이 현재 활성 작업이 소유하지 않은 소켓(즉 작업 간에 소켓을 공유하려고 시도)에 액세스하거나 WSACleanup 이 너무 많이 호출되었을 수 있습니다
10101WSAEDISCON정상 종료가 진행 중입니다. 원격 당사자가 정상적인 종료 시퀀스를 시작했음을 나타내기 위해 WSARecv 및 WSARecvFrom 에서 반환됩니다.
10102WSAENOMORE더 이상 결과가 없습니다. WSALookupServiceNext 함수에서 더 이상 결과를 반환할 수 없습니다.
10103WSAECANCELLED통화가 취소되었습니다. 이 호출이 계속 처리되는 동안 WSALookupServiceEnd 함수에 대한 호출이 수행되었습니다. 통화가 취소되었습니다.
10104WSAEINVALIDPROCTABLE프로시저 호출 테이블이 잘못되었습니다. 서비스 공급자 프로시저 호출 테이블이 잘못되었습니다. 서비스 공급자가 Ws2_32.dll 위해 가짜 프로시저 테이블을 반환했습니다. 이는 일반적으로 하나 이상의 함수 포인터가 NULL이기 때문에 발생합니다.
10105WSAEINVALIDPROVIDER서비스 공급자가 잘못되었습니다. 요청한 서비스 공급자가 잘못되었습니다. 이 오류는 지정된 프로토콜 항목을 찾을 수 없는 경우 WSCGetProviderInfo 및 WSCGetProviderInfo32 함수에서 반환됩니다. 서비스 공급자가 2.0 이외의 버전 번호를 반환한 경우에도 이 오류가 반환됩니다.
10106WSAEPROVIDERFAILEDINIT서비스 공급자를 초기화하지 못했습니다. 요청한 서비스 공급자를 로드하거나 초기화할 수 없습니다. 이 오류는 서비스 공급자의 DLL을 로드할 수 없거나(LoadLibrary 실패) 공급자의 WSPStartup 또는 NSPStartup 함수가 실패한 경우 반환됩니다.
10107WSASYSCALLFAILURE시스템 호출 실패. 실패하지 않아야 하는 시스템 호출이 실패했습니다. 다양한 조건에서 반환되는 일반적인 오류 코드입니다. 실패하지 않아야 하는 시스템 호출이 실패할 때 반환됩니다. 예를 들어 WaitForMultipleEvents 에 대한 호출이 실패하거나 레지스트리 함수 중 하나가 프로토콜/네임스페이스 카탈로그를 조작하려고 실패하는 경우입니다. 공급자가 SUCCESS를 반환하지 않고 확장된 오류 코드를 제공하지 않을 때 반환됩니다. 서비스 공급자 구현 오류를 나타낼 수 있습니다.
10108WSASERVICE_NOT_FOUND서비스를 찾을 수 없습니다. 알려진 서비스가 없습니다. 지정된 네임스페이스에서 서비스를 찾을 수 없습니다.
10109WSATYPE_NOT_FOUND클래스 형식을 찾을 수 없습니다. 지정된 클래스를 찾을 수 없습니다.
10110WSA_E_NO_MORE더 이상 결과가 없습니다. WSALookupServiceNext 함수에서 더 이상 결과를 반환할 수 없습니다. WSA_E_CANCELLED 10111 통화가 취소되었습니다. 이 호출이 계속 처리되는 동안 WSALookupServiceEnd 함수에 대한 호출이 수행되었습니다. 통화가 취소되었습
10112WSAEREFUSED데이터베이스 쿼리가 거부되었습니다. 적극적으로 거부되었기 때문에 데이터베이스 쿼리가 실패했습니다.
11001WSAHOST_NOT_FOUND호스트를 찾을 수 없습니다. 호스트를 확인할 수 없습니다. 이름은 공식 호스트 이름 또는 별칭이 아니거나 쿼리 중인 데이터베이스에서 찾을 수 없습니다. 이 오류는 프로토콜 및 서비스 쿼리에 대해 반환될 수도 있으며 지정된 이름을 관련 데이터베이스에서 찾을 수 없음을 의미합니다.
11002WSATRY_AGAIN인증되지 않은 호스트를 찾을 수 없습니다. 이는 일반적으로 호스트 이름 확인 중에 일시적인 오류이며 로컬 서버가 신뢰할 수 있는 서버로부터 응답을 받지 못했음을 의미합니다. 잠시 후 다시 시도하면 성공할 수 있습니다.
11003WSANO_RECOVERY복구할 수 없는 오류입니다. 이는 데이터베이스 조회 중에 일종의 복구할 수 없는 오류가 발생했음을 나타냅니다. 데이터베이스 파일(예: BSD 호환 HOSTS SERVICES 또는 PROTOCOLS 파일)을 찾을 수 없거나 서버에서 심각한 오류로 DNS 요청을 반환했기 때문일 수 있습니다
11004WSANO_DATA유효한 이름이며 요청된 형식의 데이터 레코드가 없습니다. 요청된 이름이 유효하고 데이터베이스에서 발견되었지만 올바른 연결된 데이터가 확인되지 않습니다. 이에 대한 일반적인 예는 DNS(도메인 이름 서버)를 사용하는 호스트 이름-주소 변환 시도( gethostbyname 또는 WSAAsyncGetHostByName 사용)입니다. MX 레코드가 반환되지만 호스트 자체가 존재하지만 직접 연결할 수 없음을 나타내는 A 레코드가 없습니다.
11005WSA_QOS_RECEIVERSQoS 수신기. 적어도 하나의 QoS 예약이 도착했습니다.
11006WSA_QOS_SENDERSQoS 보낸 사람. 하나 이상의 QoS 전송 경로가 도착했습니다.
11007WSA_QOS_NO_SENDERSQoS 보낸 사람이 없습니다.
11008WSA_QOS_NO_RECEIVERSQoS 수신자가 없습니다. QoS 수신기가 없습니다.
11009WSA_QOS_REQUEST_CONFIRMEDQoS 요청이 확인되었습니다. QoS 예약 요청이 확인되었습니다.
11010WSA_QOS_ADMISSION_FAILUREQoS 허용 오류입니다. 리소스 부족으로 인해 QoS 오류가 발생했습니다.
11011WSA_QOS_POLICY_FAILUREQoS 정책 실패. 정책 시스템에서 기존 정책 내에서 요청된 리소스를 할당할 수 없기 때문에 QoS 요청이 거부되었습니다.
11012WSA_QOS_BAD_STYLEQoS 잘못된 스타일입니다. 알 수 없거나 충돌하는 QoS 스타일이 발견되었습니다.
11013WSA_QOS_BAD_OBJECTQoS 잘못된 개체입니다. 일반적으로 filterspec 또는 공급자별 버퍼의 일부에서 문제가 발생했습니다.
11014WSA_QOS_TRAFFIC_CTRL_ERRORQoS 트래픽 제어 오류입니다. 제네릭 QoS 요청이 TC API에 의해 로컬 적용을 위해 변환되었기 때문에 기본 TC(트래픽 제어) API 오류가 발생했습니다. 메모리 부족 오류 또는 내부 QoS 공급자 오류 때문일 수 있습니다.
11015WSA_QOS_GENERIC_ERRORQoS 제네릭 오류입니다. 일반적인 QoS 오류입니다.
11016WSA_QOS_ESERVICETYPEQoS 서비스 유형 오류입니다. 잘못되었거나 인식할 수 없는 서비스 유형이 QoS flowspec에서 발견되었습니다.
11017WSA_QOS_EFLOWSPECQoS flowspec 오류입니다. 잘못되었거나 일관되지 않은 flowspec이 QOS 구조에서 발견되었습니다.
11018WSA_QOS_EPROVSPECBUFQoS 공급자 버퍼가 잘못되었습니다. 잘못된 QoS 공급자별 버퍼입니다.
11019WSA_QOS_EFILTERSTYLEQoS 필터 스타일이 잘못되었습니다. 잘못된 QoS 필터 스타일이 사용되었습니다.
11020WSA_QOS_EFILTERTYPEQoS 필터 형식이 잘못되었습니다. 잘못된 QoS 필터 형식이 사용되었습니다.
11021WSA_QOS_EFILTERCOUNT잘못된 QoS 필터 수입니다. FLOWDESCRIPTOR에 잘못된 수의 QoS FILTERSPEC가 지정되었습니다.
11022WSA_QOS_EOBJLENGTHQoS 개체 길이가 잘못되었습니다. 잘못된 ObjectLength 필드가 있는 개체가 QoS 공급자별 버퍼에 지정되었습니다.
11023WSA_QOS_EFLOWCOUNT잘못된 QoS 흐름 수입니다. QoS 구조에 잘못된 수의 흐름 설명자가 지정되었습니다.
11024WSA_QOS_EUNKOWNPSOBJ인식할 수 없는 QoS 개체입니다. 인식할 수 없는 개체가 QoS 공급자별 버퍼에서 발견되었습니다.
11025WSA_QOS_EPOLICYOBJ잘못된 QoS 정책 개체입니다. 잘못된 정책 개체가 QoS 공급자별 버퍼에서 발견되었습니다.
11026WSA_QOS_EFLOWDESC잘못된 QoS 흐름 설명자입니다. 흐름 설명자 목록에서 잘못된 QoS 흐름 설명자를 찾았습니다.
11027WSA_QOS_EPSFLOWSPECQoS 공급자별 flowspec이 잘못되었습니다. 잘못되었거나 일관되지 않은 flowspec이 QoS 공급자별 버퍼에서 발견되었습니다.
11028WSA_QOS_EPSFILTERSPECQoS 공급자별 filterspec이 잘못되었습니다. 잘못된 FILTERSPEC가 QoS 공급자별 버퍼에서 발견되었습니다.
11029WSA_QOS_ESDMODEOBJ잘못된 QoS 셰이프 삭제 모드 개체입니다. 잘못된 셰이프 삭제 모드 개체가 QoS 공급자별 버퍼에서 발견되었습니다.
11030WSA_QOS_ESHAPERATEOBJQoS 셰이핑 속도 개체가 잘못되었습니다. 잘못된 셰이핑 속도 개체가 QoS 공급자별 버퍼에서 발견되었습니다.
11031WSA_QOS_RESERVED_PETYPE예약된 정책 QoS 요소 형식입니다. 예약된 정책 요소가 QoS 공급자별 버퍼
윈도우 소켓 에러코드 및 에러코드명칭

정리된 표를 보시면 아시겠지만 소켓 오류의 종류가 굉장히 다양합니다. 이런 오류메세지를 보고 어떤 문제인지 빠르게 캐치를 할 수 있어야 좋은 개발자가 될 수 있는데, 일반적인 상황에서 발생하는 오류코드는 몇 가지 되지 않는 것도 사실입니다.

필요할 때 오류코드를 찾으면 되고, 모두 달달 외우실 필요는 없습니다. 본 페이지를 즐겨찾기 해두어도 괜찮을 것 같습니다. ^^;


자주 발생하는 윈도우 소켓 오류

소켓 통신 프로그램을 개발할 경우 자주 발생하는 에러가 있습니다. 주로 소켓의 연결과 소켓으로 데이터를 송수신 할때, 그리고 소켓을 종료할 때 발생하는 에러코드들이 그것입니다. 사실 이 세가지 오류코드 이외에 다른 오류들을 쉽게 발견하는 것도 어려울거에요.


  • 10053 WSAECONNABORTED (대상 호스트가 연결 끊음)
  • 10054 WSAECONNRESET (
  • 10061 WSAECONNREFUSED


소켓은 서버, 클라이언트 양쪽에서 통신을 하는 것이기 때문에 클라이언트 소켓으로 인한 문제인지, 서버쪽 소켓에서 발생하는 문제인지 정확하게 진단할 수 있어야 합니다.

소켓 오류메세지에서 대상 컴퓨터, 대상 호스트 등으로 표시되는 경우는 상대방 시스템의 문제일 확률이 높고, 반대로 대상이라는 주체가 없을 경우는 개발중인 컴퓨터의 문제일 확률이 높습니다.

예를 들어 10053, 10054의 경우 상대방 시스템이 연결을 끊어버리거나 어떤 이유로든 상태방 시스템의 문제로 인해 연결이 끊기는 경우입니다.
10061의 경우는 아예 접속자체가 안되는 경우입니다.

이 점을 염두에 두시면 문제의 원인을 찾는게 수월해 질 수 있으니 참고하시기 바랍니다.

댓글 남기기

error: 저작권 콘텐츠보호를 부탁드립니다.