다음을 통해 공유


Windows 소켓: 소켓에 보관 파일을 사용 하 여

이 문서에서는 설명의 CSocket 프로그래밍 모델.클래스 CSocket 클래스 보다 높은 추상화 수준에서 소켓 지원 제공 CAsyncSocket.CSocketMFC serialization 프로토콜의 버전을 사용 하 여 MFC 통해 소켓 개체 간에 데이터를 전달할 CArchive 개체입니다.CSocket차단 (Windows 메시지의 백그라운드 처리를 관리 하는 동안)를 제공 하 고 액세스할 수 있습니다 CArchive, 원시 API 또는 클래스를 사용 하 여 작업을 직접 수행 해야 하는 통신의 많은 요소를 관리 하는 CAsyncSocket.

팁

클래스를 사용할 수 있습니다 CSocket 자체의 편리한 버전으로 CAsyncSocket, 하지만 간단한 프로그래밍 모델을 사용 하는 것 CSocketCArchive 개체.

소켓 보관소의 구현 방법에 대 한 자세한 내용은 참조 하십시오. Windows 소켓: 소켓 보관소를 작동 하는 방법.예를 들어 코드, 참조 Windows 소켓: 작업 순서Windows 소켓: 보관 파일을 사용 하 여 소켓 예.수 얻을 소켓 클래스에서 고유의 클래스를 파생 하 여 일부의 기능에 대 한 자세한 내용은 참조 하십시오. Windows 소켓: 소켓 클래스에서 파생.

[!참고]

설정 된 (비 MFC) 서버와 통신 하는 MFC 클라이언트 프로그램을 작성 하는 경우 C++ 개체를 보관 저장소를 통해 보내지 마십시오.보내려는 개체의 종류를 이해 하는 MFC 응용 프로그램 서버가 아닌 경우이 받고 개체를 deserialize 할 수 없습니다.비 MFC 응용 프로그램과 통신 하는 주제에 대 한 관련된 자료도 참고 Windows 소켓: 바이트 순서.

CSocket 프로그래밍 모델

사용 하는 CSocket 개체를 만들고 여러 MFC 클래스 개체 함께 연결 하는 것입니다.서버 소켓과 3 단계를 제외 하 고는 클라이언트 소켓에 소켓 종류별로 다른 동작이 필요 하면 각 단계 다음 일반 절차에 가져옵니다.

팁

런타임에 서버 응용 프로그램이 일반적으로 먼저 준비 하 고 "클라이언트 응용 프로그램이 연결을 시도할 때 수신" 시작 합니다.클라이언트가 연결을 시도할 때 서버가 준비 되지 않으면 나중에 다시 연결을 시도 하는 사용자 응용 프로그램에서는 일반적으로 필요 합니다.

서버 소켓과 클라이언트 소켓 사이 통신을 설정 하려면

  1. 생성 된 CSocket 개체입니다.

  2. 개체를 사용 하 여 내부를 만들려면 소켓 처리 합니다.

    CSocket 클라이언트 개체의 경우 기본 매개 변수를 사용 해야 정상적으로 만들기, 데이터 그램 소켓을 필요 하지 않은.에 CSocket 서버 개체에 있는 포트로 지정 해야는 만들기 호출 합니다.

    [!참고]

    CArchive데이터 그램 소켓에서 작동 하지 않습니다.사용 하려는 경우 CSocket 데이터 그램 소켓을 사용 하는 클래스를 사용 해야 CAsyncSocket, 즉, 보관 하지 않고.데이터 그램 안정적 이므로 (전달이 보장 되지 않으며 반복 될 수 있습니다 또는 순서 없이)를 보관 저장소를 통한 serialization과 호환 되지 않습니다.Serialization 작업을 안정 되 고 시퀀스에서를 완료 하기 위해 예상 합니다.사용 하려고 하면 CSocketCArchive 개체에 대 한 데이터 그램, MFC 어설션 오류가 발생 합니다.

  3. 소켓 클라이언트 이면 호출 CAsyncSocket::Connect 서버 소켓에 소켓 개체를 연결할 수 있습니다.

    또는

    소켓 서버인 경우 호출 CAsyncSocket::Listen 시작 하려면 클라이언트에서 수신 하 고 연결 시도 합니다.연결 요청을 받으면이 호출 하 여 그대로 CAsyncSocket::Accept.

    [!참고]

    수락 멤버 함수 사용에 대 한 참조를 새, 빈 CSocket 매개 변수로 개체입니다.이 개체를 호출 하기 전에 구성 해야 수락.이 소켓 개체가 범위를 벗어날 경우 연결을 닫습니다.호출 하지 않습니다 만들기 이 새 소켓 개체에 대 한.

  4. 만들기는 CSocketFile 연결 개체는 CSocket 개체를 합니다.

  5. 만들기는 CArchive 개체 로드 (수신) 또는 (송신) 데이터를 저장 합니다.관련 된 아카이브는 CSocketFile 개체입니다.

    사실을 염두 CArchive 데이터 그램 소켓에서 작동 하지 않습니다.

  6. 사용은 CArchive 소켓 클라이언트와 서버 간에 데이터를 전달 하는 개체입니다.

    사실을 염두에 주어진 CArchive 개체 데이터를 한 방향 으로만 이동: 로드 (수신) 또는 저장 (송신) 하나.경우에 따라서는 두 사용 됩니다 CArchive 개체: 승인을 받기 다른 데이터 전송에 대 한 하나.

    연결을 수락 하 고 아카이브를 설정 후 암호 검사와 같은 작업을 수행할 수 있습니다.

  7. 보관, 소켓 파일 및 소켓 개체를 파괴 하십시오.

    [!참고]

    클래스 CArchive 제공의 IsBufferEmpty 멤버 함수에서는 클래스에 대해 특별히 CSocket.예를 들어, 버퍼 데이터 메시지를 여러 개 포함 되어 있으면 전부 읽고 버퍼가 지워집니다 때까지 반복 해야 합니다.그렇지 않으면 데이터를 받을 수 있는지를 다음 알림 무기한 지연 될 수 있습니다.사용 IsBufferEmpty 모든 데이터를 검색 하는 것을 보장 합니다.

문서 Windows 소켓: 작업 순서 양쪽의 코드 예제에서는이 프로세스를 보여 줍니다.

자세한 내용은 다음을 참조하십시오.

참고 항목

참조

CSocket::Create

개념

Mfc에서 Windows 소켓