Winsock/C++ - 1. WSAGetLastError, FormetMessage
글 작성자: Sowhat_93
WSA(Windows Socket API)에서 소켓작업 실패시
WSAGetLastError로 이를 얻어 올 수 있다.
이 에러코드는 전역변수가 아니라 TLS(Thread Local Storage) 에 저장된다.
이 함수는 각 스레드가 저마다 에러코드를 저장한다는 것.
그러니 에러가 발생한 컨텍스트를 수행중인 스레드의 에러코드가 다른 스레드에 의해 오염될 일은 걱정하지 않아도 된다.
얻어온 에러코드는 MSDN을 통해 정보를 확인한다.
https://docs.microsoft.com/ko-kr/windows/win32/winsock/windows-sockets-error-codes-2
MSDN을 보는것이 무조건 좋지만 ... 다음과 같은 함수를 이용해 아주 간략한 정보를 확인할 수 있다.
Windows OS는 DLL에 오류코드에 대한 Message를 정의 해 두었다.
이것을 문자열 형태로 읽어오는 함수이다.
아래는 예제코드.
int Error = WSAGetLastError();
char msgBuf[1024];
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM,
NULL, Error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), msgBuf, 1024, NULL);
std::cout << msgBuf << std::endl;
'소켓 프로그래밍' 카테고리의 다른 글
Winsock/C++ - IOCP 종료처리 관련 (0) | 2022.01.10 |
---|---|
Winsock/C++ - 4. setsockopt, getsockopt, WSAIoctl (0) | 2022.01.04 |
Winsock/C++ - 3. 데이터 송수신 send, recv (0) | 2022.01.03 |
Winsock/C++ - 2. TCP 연결 bind,listen,accept 그리고 connect (0) | 2022.01.03 |
Winsock - 소켓 송수신 버퍼 사이즈 대체 어떻게 해야하나? (0) | 2021.12.01 |
댓글
이 글 공유하기
다른 글
-
Winsock/C++ - 4. setsockopt, getsockopt, WSAIoctl
Winsock/C++ - 4. setsockopt, getsockopt, WSAIoctl
2022.01.04 -
Winsock/C++ - 3. 데이터 송수신 send, recv
Winsock/C++ - 3. 데이터 송수신 send, recv
2022.01.03 -
Winsock/C++ - 2. TCP 연결 bind,listen,accept 그리고 connect
Winsock/C++ - 2. TCP 연결 bind,listen,accept 그리고 connect
2022.01.03 -
Winsock - 소켓 송수신 버퍼 사이즈 대체 어떻게 해야하나?
Winsock - 소켓 송수신 버퍼 사이즈 대체 어떻게 해야하나?
2021.12.01