CAsyncSocket::ReceiveFrom

int ReceiveFrom ( void * lpBuf, int nBufLen, CStringamp; rSocketAddress, UINT & rSocketPort, int nFlags = 0 );

int ReceiveFrom ( void * lpBuf, int nBufLen, SOCKADDR * lpSockAddr, int * lpSockAddrLen, int nFlags = 0 );

반환 값

오류가 발생 하는 경우 ReceiveFrom 받은 바이트 수를 반환 합니다. 연결이 닫힌 경우 0을 반환 합니다. 그렇지 않으면, SOCKET_ERROR 의 값이 반환 되 고 GetLastError를 호출 하 여 특정 오류 코드를 검색할 수 있습니다. 이 멤버 함수에 다음과 같은 오류가 적용:

매개 변수

lpBuf

들어오는 데이터에 대 한 버퍼。

nBufLen

LpBuf 바이트에서의 길이。

rSocketAddress

점선된 숫자 IP 주소를 수신 하는 CString 개체에 대 한 참조。

rSocketPort

UINT 포트 저장에 대 한 참조。

lpSockAddr

반환 시 원본 주소를 보유 하 고 있는 SOCKADDR 구조체에 대 한 포인터。

lpSockAddrLen

LpSockAddr 바이트에서에서 원본 주소 길이 대 한 포인터。

nFlags

호출이 수행 되는 방법을 지정 합니다. 이 함수의 의미 소켓 옵션 및 nFlags 매개 변수에 의해 결정 됩니다. 후자는 c + + 또는 연산자와 함께 다음 값을 결합 하 여 생성 된:

주의

데이터 그램을 수신 하 여 SOCKADDR 구조체 또는 rSocketAddress원본 주소 저장이 멤버 함수를 호출 합니다. 이 함수는 (아마도 연결된) 소켓에 들어오는 데이터를 읽고 데이터를 전송 하는 주소를 캡처。

형식의 SOCK_STREAM소켓에 대 한 많은 정보를 제공 하는 버퍼의 크기를 현재 사용할 수 있는 반환 됩니다. -밴드 데이터 (소켓 옵션 SO_OOBINLINE)에 선 수신 소켓을 구성 하는 경우-밴드 데이터는 읽기-밴드 데이터만 반환 됩니다. 응용 프로그램이 더의 대역 데이터를 읽을 수 남아 있는지 여부를 확인 하려면 IOCtlSIOCATMARK 옵션 또는 OnOutOfBandData 를 사용할 수 있습니다. SOCK_STREAM 소켓에 대 한 lpSockAddrlpSockAddrLen 매개 변수는 무시 됩니다. 。

데이터 그램 소켓에 대 한 데이터를 제공 하는 버퍼의 크기는 첫 번째 큐에 추가 된 데이터 그램에서 추출 됩니다. 데이터 그램 제공 버퍼 보다 크면 메시지의 첫 번째 부분으로 버퍼가 채워집니다, 그리고 초과 데이터는 손실 및 ReceiveFrom 설정 WSAEMSGSIZE 오류 코드와 함께 SOCKET_ERROR 의 값을 반환 합니다.

LpSockAddr , 0이 아닌 경우 형식의 SOCK_DGRAM소켓은 소켓에서 데이터를 전송 하는 네트워크 주소 해당 SOCKADDR 구조에 복사 됩니다. LpSockAddrLen 가 가리키는 값이이 구조체의 크기를 초기화 하 고 거기에 저장 된 주소의 실제 크기를 나타내기 위해 복귀에 수정 됩니다. 소켓에 사용할 수 있는 들어오는 데이터가 없는 경우 ReceiveFrom 호출이 도착 하지 않는 소켓 데이터를 기다리는 비블로킹. 이 경우 SOCKET_ERROR 의 값은 설정 WSAEWOULDBLOCK오류 코드와 함께 반환 됩니다. 더 많은 데이터가 도착 하는 시기를 결정 하는 OnReceive 콜백。

ReceiveFrom 유형의 SOCK_STREAM 소켓은 원격 쪽 연결 정상적으로 종료 하는 경우 0 바이트를 받은 즉시 완료 됩니다.

CAsyncSocket 개요 |nbsp; 클래스 멤버 (ko) | 계층 구조 차트(&N)

참고 항목nbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::Receive, CAsyncSocket::Send(&N)

Index