Windows 소켓: 소켓에 보관 파일을 사용 하 여
이 문서에서는 설명의 CSocket 프로그래밍 모델.클래스 CSocket 클래스 보다 높은 추상화 수준에서 소켓 지원 제공 CAsyncSocket.CSocketMFC serialization 프로토콜의 버전을 사용 하 여 MFC 통해 소켓 개체 간에 데이터를 전달할 CArchive 개체입니다.CSocket차단 (Windows 메시지의 백그라운드 처리를 관리 하는 동안)를 제공 하 고 액세스할 수 있습니다 CArchive, 원시 API 또는 클래스를 사용 하 여 작업을 직접 수행 해야 하는 통신의 많은 요소를 관리 하는 CAsyncSocket.
팁 |
---|
클래스를 사용할 수 있습니다 CSocket 자체의 편리한 버전으로 CAsyncSocket, 하지만 간단한 프로그래밍 모델을 사용 하는 것 CSocket 에 CArchive 개체. |
소켓 보관소의 구현 방법에 대 한 자세한 내용은 참조 하십시오. Windows 소켓: 소켓 보관소를 작동 하는 방법.예를 들어 코드, 참조 Windows 소켓: 작업 순서 및 Windows 소켓: 보관 파일을 사용 하 여 소켓 예.수 얻을 소켓 클래스에서 고유의 클래스를 파생 하 여 일부의 기능에 대 한 자세한 내용은 참조 하십시오. Windows 소켓: 소켓 클래스에서 파생.
[!참고]
설정 된 (비 MFC) 서버와 통신 하는 MFC 클라이언트 프로그램을 작성 하는 경우 C++ 개체를 보관 저장소를 통해 보내지 마십시오.보내려는 개체의 종류를 이해 하는 MFC 응용 프로그램 서버가 아닌 경우이 받고 개체를 deserialize 할 수 없습니다.비 MFC 응용 프로그램과 통신 하는 주제에 대 한 관련된 자료도 참고 Windows 소켓: 바이트 순서.
CSocket 프로그래밍 모델
사용 하는 CSocket 개체를 만들고 여러 MFC 클래스 개체 함께 연결 하는 것입니다.서버 소켓과 3 단계를 제외 하 고는 클라이언트 소켓에 소켓 종류별로 다른 동작이 필요 하면 각 단계 다음 일반 절차에 가져옵니다.
팁 |
---|
런타임에 서버 응용 프로그램이 일반적으로 먼저 준비 하 고 "클라이언트 응용 프로그램이 연결을 시도할 때 수신" 시작 합니다.클라이언트가 연결을 시도할 때 서버가 준비 되지 않으면 나중에 다시 연결을 시도 하는 사용자 응용 프로그램에서는 일반적으로 필요 합니다. |
서버 소켓과 클라이언트 소켓 사이 통신을 설정 하려면
생성 된 CSocket 개체입니다.
개체를 사용 하 여 내부를 만들려면 소켓 처리 합니다.
에 CSocket 클라이언트 개체의 경우 기본 매개 변수를 사용 해야 정상적으로 만들기, 데이터 그램 소켓을 필요 하지 않은.에 CSocket 서버 개체에 있는 포트로 지정 해야는 만들기 호출 합니다.
[!참고]
CArchive데이터 그램 소켓에서 작동 하지 않습니다.사용 하려는 경우 CSocket 데이터 그램 소켓을 사용 하는 클래스를 사용 해야 CAsyncSocket, 즉, 보관 하지 않고.데이터 그램 안정적 이므로 (전달이 보장 되지 않으며 반복 될 수 있습니다 또는 순서 없이)를 보관 저장소를 통한 serialization과 호환 되지 않습니다.Serialization 작업을 안정 되 고 시퀀스에서를 완료 하기 위해 예상 합니다.사용 하려고 하면 CSocket 에 CArchive 개체에 대 한 데이터 그램, MFC 어설션 오류가 발생 합니다.
소켓 클라이언트 이면 호출 CAsyncSocket::Connect 서버 소켓에 소켓 개체를 연결할 수 있습니다.
또는
소켓 서버인 경우 호출 CAsyncSocket::Listen 시작 하려면 클라이언트에서 수신 하 고 연결 시도 합니다.연결 요청을 받으면이 호출 하 여 그대로 CAsyncSocket::Accept.
[!참고]
수락 멤버 함수 사용에 대 한 참조를 새, 빈 CSocket 매개 변수로 개체입니다.이 개체를 호출 하기 전에 구성 해야 수락.이 소켓 개체가 범위를 벗어날 경우 연결을 닫습니다.호출 하지 않습니다 만들기 이 새 소켓 개체에 대 한.
만들기는 CSocketFile 연결 개체는 CSocket 개체를 합니다.
만들기는 CArchive 개체 로드 (수신) 또는 (송신) 데이터를 저장 합니다.관련 된 아카이브는 CSocketFile 개체입니다.
사실을 염두 CArchive 데이터 그램 소켓에서 작동 하지 않습니다.
사용은 CArchive 소켓 클라이언트와 서버 간에 데이터를 전달 하는 개체입니다.
사실을 염두에 주어진 CArchive 개체 데이터를 한 방향 으로만 이동: 로드 (수신) 또는 저장 (송신) 하나.경우에 따라서는 두 사용 됩니다 CArchive 개체: 승인을 받기 다른 데이터 전송에 대 한 하나.
연결을 수락 하 고 아카이브를 설정 후 암호 검사와 같은 작업을 수행할 수 있습니다.
보관, 소켓 파일 및 소켓 개체를 파괴 하십시오.
[!참고]
클래스 CArchive 제공의 IsBufferEmpty 멤버 함수에서는 클래스에 대해 특별히 CSocket.예를 들어, 버퍼 데이터 메시지를 여러 개 포함 되어 있으면 전부 읽고 버퍼가 지워집니다 때까지 반복 해야 합니다.그렇지 않으면 데이터를 받을 수 있는지를 다음 알림 무기한 지연 될 수 있습니다.사용 IsBufferEmpty 모든 데이터를 검색 하는 것을 보장 합니다.
문서 Windows 소켓: 작업 순서 양쪽의 코드 예제에서는이 프로세스를 보여 줍니다.
자세한 내용은 다음을 참조하십시오.