다음을 통해 공유


Socket.EndReceive 메서드

정의

보류 중인 비동기 읽기를 끝냅니다.

오버로드

EndReceive(IAsyncResult)

보류 중인 비동기 읽기를 끝냅니다.

EndReceive(IAsyncResult, SocketError)

보류 중인 비동기 읽기를 끝냅니다.

EndReceive(IAsyncResult)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

보류 중인 비동기 읽기를 끝냅니다.

public:
 int EndReceive(IAsyncResult ^ asyncResult);
public int EndReceive (IAsyncResult asyncResult);
member this.EndReceive : IAsyncResult -> int
Public Function EndReceive (asyncResult As IAsyncResult) As Integer

매개 변수

asyncResult
IAsyncResult

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

반환

받은 바이트 수입니다.

예외

asyncResult이(가) null인 경우

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

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

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

또는

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

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

설명

중요

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

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

메서드는 EndReceive 데이터를 사용할 수 있을 때까지 차단됩니다. 연결 없는 프로토콜을 사용하는 경우 는 EndReceive 들어오는 네트워크 버퍼에서 사용할 수 있는 첫 번째 큐에 추가된 데이터그램을 읽습니다. 연결 지향 프로토콜을 사용하는 경우 메서드는 메서드의 EndReceive 매개 변수에 지정한 바이트 수까지 사용할 수 있는 size 만큼의 BeginReceive 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 EndReceive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

참고

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

참고

지정된 스레드에서 시작한 모든 I/O는 해당 스레드가 종료될 때 취소됩니다. 작업이 완료되기 전에 스레드가 종료되면 보류 중인 비동기 작업이 실패할 수 있습니다.

참고

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

추가 정보

적용 대상

EndReceive(IAsyncResult, SocketError)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

보류 중인 비동기 읽기를 끝냅니다.

public:
 int EndReceive(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndReceive (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndReceive : IAsyncResult * SocketError -> int
Public Function EndReceive (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

매개 변수

asyncResult
IAsyncResult

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

errorCode
SocketError

소켓 오류를 저장하는 SocketError 개체입니다.

반환

받은 바이트 수입니다.

예외

asyncResult이(가) null인 경우

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

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

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

또는

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

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

설명

중요

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

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

메서드는 EndReceive 데이터를 사용할 수 있을 때까지 차단됩니다. 연결 없는 프로토콜을 사용하는 경우 는 EndReceive 들어오는 네트워크 버퍼에서 사용할 수 있는 첫 번째 큐에 추가된 데이터그램을 읽습니다. 연결 지향 프로토콜을 사용하는 경우 메서드는 메서드의 EndReceive 매개 변수에 지정한 바이트 수까지 사용할 수 있는 size 만큼의 BeginReceive 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 EndReceive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

참고

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

참고

지정된 스레드에서 시작한 모든 I/O는 해당 스레드가 종료될 때 취소됩니다. 작업이 완료되기 전에 스레드가 종료되면 보류 중인 비동기 작업이 실패할 수 있습니다.

참고

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

추가 정보

적용 대상