소켓 통신을 배우고 있는데요 코드에서 어떤땐 SOCKET_ERROR로 어떤땐 INVALID_SOCKET으로 에러를 받던데
혹시 두 코드의 차이가 뭔지 알수있을까요?
/* * This is used instead of -1, since the * SOCKET type is unsigned. */ #define INVALID_SOCKET (SOCKET)(~0) #define SOCKET_ERROR (-1)
위 내용은 winsock2.h 에 나오는 정의입니다. SOCKET_ERROR는 정수형이고, INVALID_SOCKET은 SOCKET 타입(으로 캐스팅된 정수형)이죠.
socket()이나 accept()처럼 SOCKET 타입을 반환하는 함수에서는 오류발생시 INVALID_SOCKET을 반환하고, connect()나 bind()처럼 int형을 반환하는 함수에서는 SOCKET_ERROR를 반환하는 것이죠. 실질적인 오류코드는 WSAGetLastError()로 파악하고요.
winsock말고 유닉스 계열의 bsd 소켓에서는 위 함수들이 오류발생시 모두 -1을 반환하고 오류코드는 errno로 파악합니다.
궁금한점이 해결됬습니다
갑자기 차이가 뭘까 하고 검색해봤는데, 바로 딱 답이 나오는군요. 속이 시원하네요 ~ ^^
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
/*
위 내용은 winsock2.h 에 나오는 정의입니다. SOCKET_ERROR는 정수형이고, INVALID_SOCKET은 SOCKET 타입(으로 캐스팅된 정수형)이죠.
socket()이나 accept()처럼 SOCKET 타입을 반환하는 함수에서는 오류발생시 INVALID_SOCKET을 반환하고, connect()나 bind()처럼 int형을 반환하는 함수에서는 SOCKET_ERROR를 반환하는 것이죠. 실질적인 오류코드는 WSAGetLastError()로 파악하고요.
winsock말고 유닉스 계열의 bsd 소켓에서는 위 함수들이 오류발생시 모두 -1을 반환하고 오류코드는 errno로 파악합니다.
감사합니다 :)
궁금한점이 해결됬습니다
속이 시원하네요 ~ ^^
갑자기 차이가 뭘까 하고 검색해봤는데, 바로 딱 답이 나오는군요.
속이 시원하네요 ~ ^^
댓글 달기