Windows 소켓: 차단
이 문서 및 두 개의 부록 Windows 소켓 프로그래밍에는 몇 가지 문제에 설명합니다.이 문서에서는 차단에 대해 설명 합니다.다른 문제는 문서에서 설명: Windows 소켓: 바이트 순서 및 Windows 소켓: 문자열 변환.
사용 하거나 클래스에서 파생 되는 경우 CAsyncSocket, 이러한 문제를 직접 관리 해야 합니다.사용 하거나 클래스에서 파생 되는 경우 CSocket, MFC 관리를 자동으로.
차단
소켓 "차단 모드" 또는 "비차단 모드"에서 가능 합니다. 작업을 완료할 때까지 소켓 차단 또는 동기 모드에서 함수는 반환 하지 않습니다.해당 함수를 호출한 소켓이 아무 것도 못하는 차단 이라고-차단-호출이 반환 될 때까지.호출 하는 받기 멤버 함수, 예를 들어 걸릴 수 있습니다 임의의 시간이 보내는 응용 프로그램이 보낼 때 기다리는 완료 (사용 중인 경우이 CSocket, 또는 사용 하 여 CAsyncSocket 와 차단).경우는 CAsyncSocket 개체 (비동기적으로 작동) 비블로킹 모드로 호출에서 바로 반환 됩니다와 함께 검색할 수 있는 현재 오류 코드는 GetLastError 멤버 함수인 아닙니다, 호출을 차단 되는 것을 나타내는 것이 즉시 반환 되는 모드 때문에.(CSocket 을 반환 하지 않습니다 아닙니다.클래스에서 차단을 관리 합니다.)
32 비트 및 64 비트 운영 체제 (예: Windows 95 또는 Windows 98) 보다 16 비트 운영 체제 (예: Windows 3.1)에서 소켓 동작은 다릅니다.16 비트 운영 체제를 달리 32 비트 및 64 비트 운영 체제는 선점형 멀티태스킹을 사용 및 다중 스레딩을 제공.32 비트 및 64 비트 운영 체제에서 별도 작업자 스레드에서 소켓을 넣을 수 있습니다.스레드에서 소켓 응용 프로그램에서 다른 작업을 방해 하지 않고 차단에 계산 시간 낭비를 차단할 수 있습니다.다중 스레드 프로그래밍에 대 한 자세한 내용은 문서를 참조 하십시오. 다중 스레딩.
[!참고]
다중 스레드 응용 프로그램에서의 차단 특성을 사용할 수 있습니다 CSocket 사용자 인터페이스의 응답성에 영향을 주지 않고 프로그램 설계를 단순화할 수 있습니다.여 주 스레드의 사용자 상호 작용을 처리 하 고 CSocket 다른 스레드에서 처리, 이러한 논리 작업을 구분할 수 있습니다.다중 스레드 응용 프로그램에서 이러한 두 작업 해야 결합 하는 일반적으로 사용 하는 단일 스레드로 처리 CAsyncSocket 요청 또는 재정의에서 통신 요청을 처리할 수 있도록 CSocket::OnMessagePending 오래 걸리는 동기 작업 중 사용자가 작업을 처리 합니다.
이 토론 나머지 16 비트 운영 체제를 대상으로 하는 프로그래머는 다음과 같습니다.
일반적으로 사용 하는 경우 CAsyncSocket, 차단 작업을 사용 하지 않도록 하 고 대신을 비동기적으로 작동 해야 합니다.나타난다는 점에서 비동기 작업에는 아닙니다 호출 후에 오류 코드 수신, 예를 들어 때까지 대기를 OnReceive 멤버 함수 라고 알려주는 다시 읽을 수 있습니다.비동기 호출 된 내용을 다시 소켓의 적절 한 콜백 알림 기능을 같이 호출 하 여 OnReceive.
Windows에서 블로킹 호출은 좋지를 간주 됩니다.기본적으로 CAsyncSocket 해야 비동기 호출을 지원 하 고 관리 직접 콜백 알림을 사용 하 여 차단 합니다.클래스 CSocket, 그와 반대로, 동기를입니다.Windows 메시지를 보내며 차단을 자동으로 관리 합니다.
차단에 대 한 자세한 내용은 Windows 소켓 사양을 참조 하십시오.에 대 한 대 한 자세한 내용은 "" 함수를 참조 하십시오. Windows 소켓: 소켓 알림 및 Windows 소켓: 소켓 클래스에서 파생.
자세한 내용은 다음을 참조하십시오.