Socket.ReceiveAsync 메서드

정의

오버로드

ReceiveAsync(ArraySegment<Byte>)

연결된 소켓에서 데이터를 수신합니다.

ReceiveAsync(IList<ArraySegment<Byte>>)

연결된 소켓에서 데이터를 수신합니다.

ReceiveAsync(SocketAsyncEventArgs)

연결된 Socket 개체에서 데이터를 받기 위해 비동기 요청을 시작합니다.

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

연결된 소켓에서 데이터를 수신합니다.

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

연결된 소켓에서 데이터를 수신합니다.

ReceiveAsync(Memory<Byte>, CancellationToken)

연결된 소켓에서 데이터를 수신합니다.

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

연결된 소켓에서 데이터를 수신합니다.

ReceiveAsync(ArraySegment<Byte>)

연결된 소켓에서 데이터를 수신합니다.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer);
member this.ReceiveAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

매개 변수

buffer
ArraySegment<Byte>

받은 데이터의 버퍼입니다.

반환

수신된 바이트 수로 완료되는 비동기 작업입니다.

예외

Socket이 닫혔습니다.

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

적용 대상

ReceiveAsync(IList<ArraySegment<Byte>>)

연결된 소켓에서 데이터를 수신합니다.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

매개 변수

buffers
IList<ArraySegment<Byte>>

수신된 데이터에 대한 버퍼 목록입니다.

반환

수신된 바이트 수로 완료되는 비동기 작업입니다.

예외

매개 변수가 buffers null이었습니다.

Socket이 닫혔습니다.

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

설명

이 메서드는 메서드의 동기 대응에서 throw할 수 있는 모든 비사용 예외를 반환하는 작업에 저장됩니다. 예외가 반환된 작업에 저장되면 작업이 대기될 때 해당 예외가 throw됩니다. 와 같은 ArgumentException사용 예외는 여전히 동기적으로 throw됩니다. 저장된 예외는 에서 throw Receive(IList<ArraySegment<Byte>>)된 예외를 참조하세요.

적용 대상

ReceiveAsync(SocketAsyncEventArgs)

연결된 Socket 개체에서 데이터를 받기 위해 비동기 요청을 시작합니다.

public:
 bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean

매개 변수

e
SocketAsyncEventArgs

이 비동기 소켓 작업에 사용할 SocketAsyncEventArgs 개체입니다.

반환

I/O 작업이 보류 중인 경우 true입니다. 작업이 완료되면 e 매개 변수에 대한 Completed 이벤트가 발생합니다.

I/O 작업이 동기적으로 완료된 경우 false입니다. 이 경우에는 e 매개 변수에서 Completed 이벤트가 발생하지 않으며, 메서드 호출이 반환된 직후 매개 변수로 전달된 e 개체를 검사하여 작업 결과를 검색할 수 있습니다.

예외

인수가 잘못된 경우. e 매개 변수의 Buffer 또는 BufferList 속성이 올바른 버퍼를 참조하지 않는 경우. 이러한 속성 중 하나를 설정할 수 있지만 두 속성을 동시에 설정할 수는 없습니다.

e 매개 변수에 지정된 SocketAsyncEventArgs 개체를 사용하여 소켓 작업이 이미 진행 중인 경우

Socket이 닫혔습니다.

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

설명

메서드는 ReceiveAsync 연결된 소켓 또는 바인딩된 연결 없는 소켓에서 사용되며 들어오는 데이터를 읽는 데 사용됩니다. 소켓의 로컬 주소를 알고 있어야 합니다.

바인딩된 연결 없는 소켓의 경우 이 함수는 수신된 메시지가 허용되는 주소를 제한합니다. 함수는 연결에 지정된 원격 주소의 메시지만 반환합니다. 다른 주소의 메시지는 자동으로 삭제됩니다.

매개 변수의 e 속성은 SocketAsyncEventArgs.SocketFlags 읽기 요청에 대한 추가 정보를 Window Sockets 서비스 공급자에 제공합니다. 이 매개 변수를 사용하는 방법에 대한 자세한 내용은 를 참조하세요 System.Net.Sockets.SocketFlags.

이 메서드를 성공적으로 호출하려면 개체의 System.Net.Sockets.SocketAsyncEventArgs 다음 속성과 이벤트가 필요합니다.

호출자는 콜백 메서드에서 SocketAsyncEventArgs.UserToken 정보를 검색할 수 있도록 메서드를 호출 ReceiveAsync 하기 전에 속성을 원하는 사용자 상태 개체로 설정할 수 있습니다. 콜백에 단일 개체보다 더 많은 정보가 필요한 경우 다른 필수 상태 정보를 멤버로 유지하기 위해 작은 클래스를 만들 수 있습니다.

바이트 스트림 스타일 소켓의 경우 버퍼가 채워지거나, 연결이 닫히거나, 내부적으로 버퍼링된 데이터가 소진될 때까지 들어오는 데이터가 버퍼에 배치됩니다.

메시지 지향 소켓의 경우 들어오는 메시지가 매개 변수와 연결된 버퍼의 총 크기까지 버퍼에 e 배치됩니다. 메시지가 버퍼보다 크면 버퍼가 메시지의 첫 번째 부분으로 채워집니다.

연결 지향 소켓의 ReceiveAsync 경우 메서드는 소켓이 바이트 스트림인지 메시지 지향인지에 따라 달라지는 두 가지 방법 중 하나로 가상 회로의 정상적인 종료를 나타낼 수 있습니다. 바이트 스트림의 경우 읽은 바이트 0은 정상 폐쇄를 나타내며 더 이상 바이트를 읽지 않습니다. 0바이트 메시지가 허용되는 SocketExceptionSocketAsyncEventArgs.SocketError 메시지 지향 소켓의 경우 기본 Winsock WSAEDISCON 오류 코드(10101)로 설정된 를 사용하여 정상적인 닫기를 나타냅니다. 어쨌든 SocketException 가 네이 SocketAsyncEventArgs.SocketError 티브 Winsock WSAECONNRESET 오류 코드(10054)로 설정된 은 중단 닫기가 발생했음을 나타냅니다.

추가 정보

적용 대상

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

연결된 소켓에서 데이터를 수신합니다.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

매개 변수

buffer
ArraySegment<Byte>

받은 데이터의 버퍼입니다.

socketFlags
SocketFlags

데이터를 받을 때 사용할 SocketFlags 값의 비트 조합입니다.

반환

수신된 바이트 수로 완료되는 비동기 작업입니다.

예외

Socket이 닫혔습니다.

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

적용 대상

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

연결된 소켓에서 데이터를 수신합니다.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

매개 변수

buffers
IList<ArraySegment<Byte>>

수신된 데이터에 대한 버퍼 목록입니다.

socketFlags
SocketFlags

데이터를 받을 때 사용할 SocketFlags 값의 비트 조합입니다.

반환

수신된 바이트 수로 완료되는 비동기 작업입니다.

예외

매개 변수가 buffers null이었습니다.

Socket이 닫혔습니다.

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

설명

이 메서드는 메서드의 동기 대응에서 throw할 수 있는 모든 비사용 예외를 반환하는 작업에 저장됩니다. 예외가 반환된 작업에 저장되면 작업이 대기될 때 해당 예외가 throw됩니다. 와 같은 ArgumentException사용 예외는 여전히 동기적으로 throw됩니다. 저장된 예외는 에서 throw Receive(IList<ArraySegment<Byte>>, SocketFlags)된 예외를 참조하세요.

적용 대상

ReceiveAsync(Memory<Byte>, CancellationToken)

연결된 소켓에서 데이터를 수신합니다.

public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

매개 변수

buffer
Memory<Byte>

받은 데이터의 버퍼입니다.

cancellationToken
CancellationToken

비동기 작업을 취소하는 데 사용할 수 있는 취소 토큰입니다.

반환

수신된 바이트 수로 완료되는 비동기 작업입니다.

예외

Socket이 닫혔습니다.

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

취소 토큰이 취소되었습니다. 이 예외는 반환된 작업에 저장됩니다.

적용 대상

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

연결된 소켓에서 데이터를 수신합니다.

public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

매개 변수

buffer
Memory<Byte>

받은 데이터의 버퍼입니다.

socketFlags
SocketFlags

데이터를 받을 때 사용할 SocketFlags 값의 비트 조합입니다.

cancellationToken
CancellationToken

비동기 작업을 취소하는 데 사용할 수 있는 취소 토큰입니다.

반환

수신된 바이트 수로 완료되는 비동기 작업입니다.

예외

Socket이 닫혔습니다.

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

취소 토큰이 취소되었습니다. 이 예외는 반환된 작업에 저장됩니다.

적용 대상