다음을 통해 공유


Windows 소켓: 배경

이 문서에서는 Windows 소켓의 특성과 용도를 설명합니다. 또한 이 문서는 다음을 수행합니다.

Windows 소켓 사양은 Microsoft Windows용 이진 호환 네트워크 프로그래밍 인터페이스를 정의합니다. Windows 소켓은 버클리 캘리포니아 대학교의 버클리 소프트웨어 배포(BSD, 릴리스 4.3)의 UNIX 소켓 구현을 기반으로 합니다. 사양에는 BSD 스타일 소켓 루틴과 Windows와 관련된 확장이 모두 포함됩니다. Windows 소켓을 사용하면 애플리케이션이 Windows 소켓 API를 준수하는 모든 네트워크에서 통신할 수 있습니다. Win32에서 Windows 소켓은 스레드 보안을 제공합니다.

많은 네트워크 소프트웨어 공급업체는 TCP/IP(Transmission Control Protocol/Internet Protocol), XnS(Xerox Network System), Digital Equipment Corporation의 DECNet 프로토콜, Novell Corporation의 IPX/SPX(시퀀스 포장된 교환) 등 네트워크 프로토콜에 따라 Windows 소켓을 지원합니다. 현재 Windows 소켓 사양은 TCP/IP에 대한 소켓 추상화를 정의하지만, 모든 네트워크 프로토콜은 Windows 소켓을 구현하는 DLL(동적 연결 라이브러리)의 자체 버전을 제공하여 Windows 소켓을 준수할 수 있습니다. Windows 소켓으로 작성된 상용 애플리케이션의 예로는 X Windows 서버, 터미널 에뮬레이터 및 전자 메일 시스템이 있습니다.

참고 항목

Windows 소켓의 목적은 기본 네트워크를 추상화하여 해당 네트워크에 대해 알아볼 필요가 없으므로 소켓을 지원하는 모든 네트워크에서 애플리케이션을 실행할 수 있도록 하는 것입니다. 따라서 이 설명서에서는 네트워크 프로토콜의 세부 정보를 설명하지 않습니다.

MFC(Microsoft Foundation Class Library)는 두 개의 클래스를 제공하여 Windows 소켓 API로 프로그래밍을 지원합니다. 이러한 클래스 중 하나인 이 클래스 CSocket는 네트워크 통신 프로그래밍을 간소화하기 위한 높은 수준의 추상화 기능을 제공합니다.

Windows 소켓 사양인 Windows 소켓: 현재 버전 1.1의 Microsoft Windows에서 네트워크 컴퓨팅을 위한 개방형 인터페이스는 TCP/IP 커뮤니티의 대규모 개인 및 기업 그룹에 의해 개방형 네트워킹 표준으로 개발되었으며 자유롭게 사용할 수 있습니다. 소켓 프로그래밍 모델은 인터넷 프로토콜 제품군을 사용하여 현재 하나의 "통신기본"을 지원합니다. 사양은 Windows SDK에서 사용할 수 있습니다.

소켓은 인터넷 프로토콜 제품군을 사용하기 때문에 "정보 고속도로"에서 인터넷 통신을 지원하는 애플리케이션에 선호되는 경로입니다.

소켓 정의

소켓은 통신 엔드포인트로, Windows Sockets 애플리케이션이 네트워크를 통해 데이터 패킷을 보내거나 받는 개체입니다. 소켓에는 형식이 있으며 실행 중인 프로세스와 연결되어 있으며 이름이 있을 수 있습니다. 현재 소켓은 일반적으로 인터넷 프로토콜 제품군을 사용하는 동일한 "통신 수행기본"의 다른 소켓과만 데이터를 교환합니다.

두 종류의 소켓은 양방향입니다. 양방향으로 동시에 통신할 수 있는 데이터 흐름입니다(전체 이중).

다음 두 가지 소켓 유형을 사용할 수 있습니다.

  • 스트림 소켓

    스트림 소켓은 레코드 경계가 없는 데이터 흐름(바이트 스트림)을 제공합니다. 스트림 배달되고 올바르게 시퀀스되고 업데이트되지 않습니다.

  • 데이터그램 소켓

    데이터그램 소켓은 전송이 보장되지 않으며 전송되거나 중복 제거되지 않은 시퀀스되지 않을 수 있는 레코드 지향 데이터 흐름을 지원합니다.

"Sequenced"는 패킷이 전송된 순서대로 전달됨을 의미합니다. "업데이트되지 않은"은 특정 패킷을 한 번만 가져오는 것을 의미합니다.

참고 항목

XNS와 같은 일부 네트워크 프로토콜에서 스트림은 바이트 스트림이 아닌 레코드 스트림으로 레코드 지향적일 수 있습니다. 그러나 더 일반적인 TCP/IP 프로토콜에서 스트림은 바이트 스트림입니다. Windows 소켓은 기본 프로토콜과 독립적인 추상화 수준을 제공합니다.

이러한 유형 및 어떤 상황에서 사용할 소켓 종류에 대한 자세한 내용은 Windows 소켓: Stream SocketsWindows Sockets: Datagram Sockets를 참조하세요.

SOCKET 데이터 형식

각 MFC 소켓 개체는 Windows Sockets 개체에 대한 핸들을 캡슐화합니다. 이 핸들의 데이터 형식은 SOCKET입니다. SOCKET 핸들은 창의 HWND 핸들과 유사합니다. MFC 소켓 클래스는 캡슐화된 핸들에 대한 작업을 제공합니다.

SOCKET 데이터 형식은 Windows SDK에 자세히 설명되어 있습니다. Windows 소켓 아래에서 "소켓 데이터 형식 및 오류 값"을 참조하세요.

소켓 사용

소켓은 세 개 이상의 통신 컨텍스트에서 매우 유용합니다.

  • 클라이언트/서버 모델.

  • 메시징 애플리케이션과 같은 피어 투 피어 시나리오.

  • 수신 애플리케이션이 메시지를 함수 호출로 해석하도록 하여 RPC(원격 프로시저 호출) 만들기

MFC 소켓을 사용하기에 이상적인 경우는 통신의 양쪽 끝을 작성하는 경우입니다. 양쪽 끝에서 MFC를 사용합니다. MFC가 아닌 애플리케이션과 통신할 때 사례를 관리하는 방법을 포함하여 이 항목에 대한 자세한 내용은 Windows 소켓: 바이트 순서 지정을 참조하세요.

자세한 내용은 Windows 소켓 사양을 참조하세요. ntohs, ntohl, htons, htonl. 또한 다음 항목을 참조하세요.

참고 항목

MFC의 Windows 소켓