다음을 통해 공유


CAsyncSocket::Receive

소켓에서 데이터를 받도록 하려면이 멤버 함수를 호출 합니다.

virtual int Receive(
   void* lpBuf,
   int nBufLen,
   int nFlags = 0 
);

매개 변수

  • lpBuf
    들어오는 데이터 버퍼입니다.

  • nBufLen
    길이 lpBuf (바이트)에서입니다.

  • nFlags
    호출 되는 방법을 지정 합니다.이 함수의 의미는 소켓 옵션으로 결정 됩니다 및 nFlags 매개 변수.C + +에서 다음 값을 조합 하 여 후자 생성 된 OR 운영자:

    • MSG_PEEK 에 들어오는 데이터 보기.데이터 버퍼에 복사 되는 입력된 큐에서 제거 되지 않습니다.

    • MSG_OOB 대역의 데이터를 처리 합니다.

반환 값

오류가 발생 하면 수신 수신 된 바이트 수를 반환 합니다.연결을 닫은 경우 0을 반환 합니다.그렇지 않으면 값이 SOCKET_ERROR 반환 됩니다 및 특정 오류 코드를 호출 하 여 검색할 수 있는 GetLastError.다음 오류는이 멤버 함수에 적용 됩니다.

  • WSANOTINITIALISED 성공적으로 AfxSocketInit 이 API를 사용 하기 전에 발생 합니다.

  • WSAENETDOWN 는 Windows 소켓 구현이 감지 네트워크 하위 시스템 실패 합니다.

  • WSAENOTCONN 소켓이 연결 되어 있지 않습니다.

  • WSAEINPROGRESS Windows 소켓 차단 작업이 진행 중입니다.

  • WSAENOTSOCK 설명자가 소켓이 아닙니다.

  • WSAEOPNOTSUPP   MSG_OOB 지정 된 소켓 형식의 아닙니다 SOCK_STREAM.

  • WSAESHUTDOWN ; 아래로 소켓 이미 종료 된 호출할 수 없는 수신 후 소켓 ShutDown 호출 된 nHow 0 또는 2로 설정 합니다.

  • 아닙니다 소켓 표시 되어 비블로킹으로 및 수신 수 작업을 차단 합니다.

  • WSAEMSGSIZE 데이터 그램이 너무 커서 지정한 버퍼로 하므로 잘렸습니다.

  • WSAEINVAL 소켓에는 바인딩되지 않은 바인딩할.

  • WSAECONNABORTED 가상 회로 시간 초과 나 기타 오류로 인해 중단 되었습니다.

  • WSAECONNRESET 가상 회로 원격 나란히 원래 대로 설정 했습니다.

설명

이 함수는 연결 된 스트림 또는 데이터 그램 소켓을 사용 하 고 들어오는 데이터를 읽는 데 사용 됩니다.

소켓의 종류에 대 한 SOCK_STREAM, 현재 제공 되는 버퍼의 크기까지 사용할 수 있는 많은 정보를 반환 합니다.소켓에 선 밴드의 데이터 수신에 구성 된 경우 (소켓 옵션 SO_OOBINLINE)와 밴드의 데이터 읽기 수 없습니다만의 아웃-밴드 데이터를 반환 합니다.응용 프로그램을 사용할 수 있는 IOCtlSIOCATMARK 옵션 또는 OnOutOfBandData 더-대역외 데이터를 읽을 수 있는지 확인 합니다.

데이터 그램 소켓에 대 한 데이터까지 제공 된 버퍼의 크기는 첫 번째 큐에 데이터 그램에서 추출 됩니다.데이터 그램 제공 된 버퍼 보다 큰 경우 데이터 그램의 첫 번째 부분으로 버퍼가 채워지거나, 초과 데이터는 손실 되 고 수신 값을 반환 SOCKET_ERROR 오류 코드로 설정 WSAEMSGSIZE.값을 소켓에서 들어오는 데이터가 있는지 SOCKET_ERROR 설정 오류 코드로 반환 아닙니다.OnReceive 콜백 기능을 사용 하 여 데이터가 도착할 때 확인할 수 있습니다.

소켓 형식인 경우 SOCK_STREAM 및 원격 쪽에서는 연결 아래로 들을 적절 하 게, 종료는 받기 0 바이트 수신으로 즉시 완료 됩니다.연결을 다시 설정 하는 경우는 수신 오류와 함께 실패 합니다 WSAECONNRESET.

받은 각 시간을 한 번만 호출 해야 CAsyncSocket::OnReceive 라고 합니다.

예제

예제를 보려면 CAsyncSocket::OnReceive.

요구 사항

헤더: afxsock.h

참고 항목

참조

CAsyncSocket 클래스

계층 구조 차트

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::ReceiveFrom

CAsyncSocket::Send