다음을 통해 공유


Windows 소켓: CAsyncSocket 클래스 사용

이 클래스를 사용 하는 방법을 설명 CAsyncSocket.이 클래스는 Windows 소켓 API를 매우 낮은 수준에서 캡슐화 됩니다.CAsyncSocket네트워크 통신에 자세히 알고 있지만 콜백의 편의 대 한 네트워크 이벤트 알림을 원하는 프로그래머에 의해 사용 됩니다.이 가정에 따라이 문서에서는 기본 지침만 제공 합니다.아마도 사용을 해야 CAsyncSocket Windows 소켓 용이성 MFC 응용 프로그램에서 여러 개의 네트워크 프로토콜을 다루는 싶지만 유연성을 희생 하지 않을 경우.자신 보다 수 사용 하 여 직접 클래스의 보다 일반적인 다른 모델 보다 통신 프로그래밍 하 여 효율성을 높일 수 있습니다 느낄 수 있습니다 CSocket.

CAsyncSocket에 설명 되어 있는 MFC 참조.Visual C++에는 또한 있는 Windows 소켓 사양을 제공의 Windows SDK.세부 정보를 남아 있습니다.Visual C++ 샘플 응용 프로그램을 제공 하지 않습니다 CAsyncSocket.

클래스를 사용 하는 간단한 솔루션을 네트워크 통신에 대 한 지식이 없는 경우 CSocket 에 있는 CArchive 개체입니다.참조 Windows 소켓: 보관 파일을 사용 하 여 소켓 에 대 한 자세한 내용은.

이 문서에서는 다룹니다.

  • 만들고 사용 하는 CAsyncSocket 개체입니다.

  • CAsyncSocket 사용 하 여 업무.

만들기 및 CAsyncSocket 개체 사용

Casyncsocket을 사용.

  1. 생성 한 CAsyncSocket 개체 및 개체를 사용 하 여 내부를 만들려면 소켓 처리.

    소켓 만들기 MFC 패턴을 2 단계 생성을 따릅니다.

    예를 들면 다음과 같습니다.

    CAsyncSocket sock;
    sock.Create( );    // Use the default parameters                    
    

    또는

    CAsyncSocket* pSocket = new CAsyncSocket;
    int nPort = 27;
    pSocket->Create( nPort, SOCK_DGRAM );                    
    

    위의 첫 번째 생성자가 생성 한 CAsyncSocket 스택에 개체.두 번째 생성자를 만듭니다는 CAsyncSocket 에서 힙.첫 번째 만들기 호출 위의 기본 매개 변수를 사용 하는 스트림 소켓을 만들 수 있습니다.두 번째 만들기 호출 지정 된 포트와 주소에 데이터 그램 소켓을 만듭니다.(사용할 수 있습니다 만들기 버전으로 생성 방법 중 하나입니다.)

    매개 변수를 만들기 입니다.

    • "포트": short 정수입니다.

      서버 소켓의 경우, 포트를 지정 해야 합니다.클라이언트 소켓의 경우, 일반적으로 Windows 소켓 포트를 선택할 수 있습니다.이 매개 변수에 대 한 기본값을 그대로.

    • 소켓 종류: SOCK_STREAM (기본값) 또는 SOCK_DGRAM.

    • 소켓 "주소" "ftp.microsoft.com 형식" 또는 "128.56.22.8" 등입니다.

      이 사용자의 네트워크에서 인터넷 프로토콜 (IP) 주소입니다.항상이 매개 변수의 기본값에 의존 합니다.

    "포트" 및 "소켓 주소" 설명 Windows 소켓: 포트 및 소켓 주소.

  2. 클라이언트 소켓 경우 소켓 개체는 서버에 연결을 사용 하 여 소켓 CAsyncSocket::Connect.

    또는

    소켓 서버인 경우 시작 수신 대기 소켓을 설정 (와 CAsyncSocket::Listen) 클라이언트에서 연결 시도 대 한.수락 연결 요청을 받으면와 CAsyncSocket::Accept.

    연결을 승인한 다음 암호 검사와 같은 작업을 수행할 수 있습니다.

    [!참고]

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

  3. 호출 하 여 다른 소켓 통신을 수행의 CAsyncSocket Windows 소켓 API 함수를 캡슐화 하는 개체의 멤버 함수입니다.

    클래스와 Windows 소켓 사양을 참조 하십시오. CAsyncSocket 에 있는 MFC 참조.

  4. 파괴의 CAsyncSocket 개체입니다.

    소켓 개체 스택에서 만들 경우 포함 하는 범위를 벗어날 때 소멸자가 호출 됩니다.힙에 소켓 개체를 만들 경우에 사용 하는 연산자는 사용에 대 한 책임은 삭제 연산자는 개체를 소멸 시킵니다.

    개체의 소멸자를 호출 합니다. 닫기 멤버 함수 개체를 소멸 하기 전에.

이 코드에서 시퀀스의 예 (에 실제로 CSocket 개체)를 참조 하십시오 Windows 소켓: 시퀀스의 작업.

CAsyncSocket 사용 하 여 업무

클래스의 개체를 만들 때 CAsyncSocket, Windows 개체를 캡슐화 합니다. 소켓 를 처리 하 고이 핸들에 대 한 작업을 제공 합니다.사용 하는 경우 CAsyncSocket, 수도 있습니다 직면 하는 API를 직접 사용 하는 경우 모든 문제를 처리 해야 합니다.예를 들면 다음과 같습니다.

  • "차단" 시나리오입니다.

  • 바이트 순서 차이 송신 및 수신 컴퓨터입니다.

  • 멀티 바이트 문자 유니코드 간 변환 (MBCS) 문자열을 설정 합니다.

이러한 추가 정보 및 용어 정의를 참조 하십시오. Windows 소켓: 차단, Windows 소켓: 바이트 순서, Windows 소켓: 문자열 변환.

이러한 문제에도 불구 하 고 클래스 CAsycnSocket 응용 프로그램에 필요한 유연성과 제어를 얻을 수 있는 경우 올바른 선택을 수 있습니다.클래스를 사용 하 여 고려해 야 할 않는 경우 CSocket 대신.CSocket많은 세부 정보를 숨깁니다: 호출 하 고 사용자 액세스를 차단 하는 동안 Windows 메시지를 pumps CArchive, 바이트 순서 차이 및 문자열 변환을 관리 합니다.

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

참고 항목

개념

Mfc에서 Windows 소켓