소켓 데이터 형식
Winsock 애플리케이션에서 소켓 설명자는 파일 설명자가 아니며 Winsock 함수와 함께 사용해야 합니다.
UNIX에서 소켓 설명자는 표준 파일 설명자로 표시됩니다. 따라서 UNIX의 소켓 설명자는 표준 파일 I/O 함수(예: 읽기 및 쓰기)에 전달될 수 있습니다.
또한 소켓 핸들을 포함한 UNIX의 모든 핸들은 작고 음수가 아닌 정수이며 일부 애플리케이션은 이것이 사실이라고 가정합니다.
Windows 소켓 핸들에는 INVALID_SOCKET 값이 유효한 소켓이 아니라는 것 외에는 제한이 없습니다. 소켓 핸들은 0에서 INVALID_SOCKET–1 범위의 모든 값을 취할 수 있습니다.
SOCKET 형식은 서명되지 않으므로 기존 소스 코드를 에서 컴파일합니다. 예를 들어 UNIX 환경에서 서명/서명되지 않은 데이터 형식 불일치에 대한 컴파일러 경고가 발생할 수 있습니다.
예를 들어 소켓 및 accept 함수가 반환될 때 오류를 확인하려면 반환 값을 –1과 비교하거나 값이 음수인지 확인하여(UNIX의 일반 및 법적 접근 방식 모두) 수행해서는 안 됩니다. 대신 애플리케이션은 Winsock2.h 헤더 파일에 정의된 대로 매니페스트 상수 INVALID_SOCKET 사용해야 합니다. 예:
일반적인 BSD UNIX 스타일
s = socket(...);
if (s == -1) /* or s < 0 */
{/*...*/}
기본 스타일
s = socket(...);
if (s == INVALID_SOCKET)
{/*...*/}
관련 항목