다음을 통해 공유


소켓 데이터 형식

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)
    {/*...*/}

소켓 애플리케이션을 Winsock으로 포팅

Winsock 프로그래밍 고려 사항