다음을 통해 공유


Socket.EndReceiveFrom(IAsyncResult, EndPoint) 메서드

정의

특정 엔드포인트에서 보류 중인 비동기 읽기를 끝냅니다.

public:
 int EndReceiveFrom(IAsyncResult ^ asyncResult, System::Net::EndPoint ^ % endPoint);
public int EndReceiveFrom (IAsyncResult asyncResult, ref System.Net.EndPoint endPoint);
member this.EndReceiveFrom : IAsyncResult * EndPoint -> int
Public Function EndReceiveFrom (asyncResult As IAsyncResult, ByRef endPoint As EndPoint) As Integer

매개 변수

asyncResult
IAsyncResult

이 비동기 작업에 대한 상태 정보 및 사용자 정의 데이터를 저장하는 IAsyncResult입니다.

endPoint
EndPoint

소스 EndPoint입니다.

반환

성공할 경우 받은 바이트 수입니다. 실패하면 0을 반환합니다.

예외

asyncResult이(가) null인 경우

BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) 메서드를 호출했지만 asyncResult가 반환되지 않은 경우

EndReceiveFrom(IAsyncResult, EndPoint)가 비동기 읽기를 위해 이미 호출된 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

또는

.NET 7 이상만 해당: 가 Socket 닫혔습니다.

.NET Framework, .NET Core 및 .NET 5-6만 해당: 가 Socket 닫혔습니다.

설명

중요

호환성 API입니다. 새 개발에 APM (Begin*End*) 메서드를 사용하지 않는 것이 좋습니다. 대신 기반 등가 Task를 사용합니다.

EndReceiveFrom 는 에서 시작한 작업을 완료합니다 BeginReceiveFrom. 일치하는 BeginReceiveFrom 호출로 IAsyncResult 만든 을 전달해야 합니다.

메서드는 EndReceiveFrom 데이터를 사용할 수 있을 때까지 차단됩니다. 연결 없는 프로토콜을 사용하는 경우 는 EndReceiveFrom 들어오는 네트워크 버퍼에서 사용할 수 있는 첫 번째 큐에 추가된 데이터그램을 읽습니다. 연결 지향 프로토콜을 사용하는 경우 메서드는 메서드의 EndReceiveFrom 매개 변수에 지정한 바이트 수까지 사용할 수 있는 size 만큼의 BeginReceiveFrom 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 EndReceiveFrom 경우 메서드는 즉시 완료되고 0바이트를 반환합니다. 받은 데이터를 가져오려면 개체의 메서드를 AsyncStateIAsyncResult 호출하고 결과 상태 개체에 포함된 버퍼를 추출합니다. 원래 호스트를 식별하려면 을 추출 EndPoint 하여 로 IPEndPoint캐스팅합니다. 메서드를 IPEndPoint.Address 사용하여 IP 주소와 메서드를 IPEndPoint.Port 가져와 포트 번호를 가져옵니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상