다음을 통해 공유


Windows 소켓: 스트림 소켓

이 문서에서는 사용 가능한 두 가지 Windows 소켓 유형 중 하나인 스트림 소켓에 대해 설명합니다. (다른 형식은 데이터그램 소켓입니다.)

스트림 소켓은 레코드 경계가 없는 데이터 흐름을 제공합니다. 양방향일 수 있는 바이트 스트림(애플리케이션은 전체 이중입니다. 소켓을 통해 전송 및 수신할 수 있습니다). 스트림 시퀀스되고 업데이트되지 않은 데이터를 제공하기 위해 의존할 수 있습니다. ("Sequenced"는 패킷이 전송된 순서대로 전달됨을 의미합니다. "업데이트되지 않은"은 특정 패킷을 한 번만 가져오는 것을 의미합니다.) 스트림 메시지 수신이 보장되며 스트림은 대량의 데이터를 처리하는 데 적합합니다.

네트워크 전송 계층은 데이터를 적절한 크기의 패킷으로 나누거나 그룹화할 수 있습니다. 클래스는 CSocket 압축 및 압축 풀기를 처리합니다.

스트림 명시적 연결을 기반으로 합니다. 소켓 A는 소켓 B에 대한 연결을 요청하고, 소켓 B는 연결 요청을 수락하거나 거부합니다.

전화 통화는 스트림에 대한 좋은 비유를 제공합니다. 정상적인 상황에서 수신 당사자는 중복 또는 손실없이 당신이 말하는 순서대로 말하는 것을 듣습니다. 예를 들어 스트림 소켓은 ASCII 또는 임의 크기의 이진 파일을 쉽게 전송하는 FTP(파일 전송 프로토콜)와 같은 구현에 적합합니다.

스트림 소켓은 데이터가 도착하도록 보장되어야 하는 경우와 데이터 크기가 큰 경우 데이터그램 소켓보다 좋습니다. 스트림 소켓에 대한 자세한 내용은 Windows 소켓 사양을 참조하세요. 사양은 Windows SDK에서 사용할 수 있습니다.

스트림 소켓 사용은 네트워크의 모든 수신 소켓으로 브로드캐스트하기 위해 데이터그램 소켓을 사용하도록 설계된 애플리케이션보다 우수할 수 있습니다.

  • 브로드캐스트 모델은 네트워크 홍수(또는 "폭풍") 문제의 영향을 받습니다.

  • 이후에 채택된 클라이언트-서버 모델이 더 효율적입니다.

  • 스트림 모델은 데이터그램 모델이 아닌 신뢰할 수 있는 데이터 전송을 제공합니다.

  • 최종 모델은 CArchive 클래스가 CSocket 클래스에 제공하는 유니코드 및 ANSI 소켓 애플리케이션 간에 통신하는 기능을 활용합니다.

    참고 항목

    클래스 CSocket를 사용하는 경우 스트림을 사용해야 합니다. 소켓 유형을 SOCK_DGRAM 지정하면 MFC 어설션이 실패합니다.

참고 항목

MFC의 Windows 소켓
Windows 소켓: 백그라운드