다음을 통해 공유


Socket.ReceiveAsync 메서드

정의

오버로드

Name Description
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>)

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

연결된 소켓에서 데이터를 받습니다.

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>

수신된 데이터의 버퍼입니다.

반환

비동기 수신 작업을 나타내는 작업입니다. 해당 Result 속성의 값에는 0(0) 사이로 buffer 읽은 총 바이트 수와 요청된 바이트 수가 포함됩니다. 결과 값은 0바이트가 요청되었거나 피어 소켓이 정상적인 종료를 수행했기 때문에 더 이상 바이트를 사용할 수 없는 경우에만 0입니다. 0바이트가 요청되면 수신 작업이 즉시 완료되거나 하나 이상의 바이트를 사용할 수 있을 때까지 완료되지 않을 수 있습니다(데이터를 사용하지 않음).

예외

Socket 닫혔습니다.

소켓에 액세스하려고 할 때 오류가 발생했습니다.

적용 대상

ReceiveAsync(IList<ArraySegment<Byte>>)

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

연결된 소켓에서 데이터를 받습니다.

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>>

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

반환

비동기 수신 작업을 나타내는 작업입니다. 해당 Result 속성의 값에는 0과 요청된 바이트 수 사이의 버퍼로 읽은 총 바이트 수가 포함됩니다. 결과 값은 0바이트가 요청되었거나 피어 소켓이 정상적인 종료를 수행했기 때문에 더 이상 바이트를 사용할 수 없는 경우에만 0입니다. 0바이트가 요청되면 수신 작업이 즉시 완료되거나 하나 이상의 바이트를 사용할 수 있을 때까지 완료되지 않을 수 있습니다(데이터를 사용하지 않음).

예외

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

Socket 닫혔습니다.

소켓에 액세스하려고 할 때 오류가 발생했습니다.

설명

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

적용 대상

ReceiveAsync(SocketAsyncEventArgs)

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

연결된 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 비동기 소켓 작업에 사용할 개체입니다.

반환

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

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

예외

인수가 잘못되었습니다. Buffer 매개 변수의 e 속성은 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)로 설정된 값은 정상적인 닫기를 나타내는 데 사용됩니다. 어쨌든 SocketExceptionSocketAsyncEventArgs.SocketError 네이티브 Winsock WSAECONNRESET 오류 코드(10054)로 설정된 경우 중단 닫기가 발생했음을 나타냅니다.

추가 정보

적용 대상

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

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

연결된 소켓에서 데이터를 받습니다.

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 값의 비트 조합입니다.

반환

비동기 수신 작업을 나타내는 작업입니다. 해당 Result 속성의 값에는 0(0) 사이로 buffer 읽은 총 바이트 수와 요청된 바이트 수가 포함됩니다. 결과 값은 0바이트가 요청되었거나 피어 소켓이 정상적인 종료를 수행했기 때문에 더 이상 바이트를 사용할 수 없는 경우에만 0입니다. 0바이트가 요청되면 수신 작업이 즉시 완료되거나 하나 이상의 바이트를 사용할 수 있을 때까지 완료되지 않을 수 있습니다(데이터를 사용하지 않음).

예외

Socket 닫혔습니다.

소켓에 액세스하려고 할 때 오류가 발생했습니다.

적용 대상

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

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

연결된 소켓에서 데이터를 받습니다.

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 값의 비트 조합입니다.

반환

비동기 수신 작업을 나타내는 작업입니다. 해당 Result 속성의 값에는 0(0) 사이로 buffer 읽은 총 바이트 수와 요청된 바이트 수가 포함됩니다. 결과 값은 0바이트가 요청되었거나 피어 소켓이 정상적인 종료를 수행했기 때문에 더 이상 바이트를 사용할 수 없는 경우에만 0입니다. 0바이트가 요청되면 수신 작업이 즉시 완료되거나 하나 이상의 바이트를 사용할 수 있을 때까지 완료되지 않을 수 있습니다(데이터를 사용하지 않음).

예외

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

Socket 닫혔습니다.

소켓에 액세스하려고 할 때 오류가 발생했습니다.

설명

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

적용 대상

ReceiveAsync(Memory<Byte>, CancellationToken)

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

연결된 소켓에서 데이터를 받습니다.

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

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

반환

비동기 수신 작업을 나타내는 A ValueTask<TResult> 입니다. 해당 Result 속성의 값에는 0(0) 사이로 buffer 읽은 총 바이트 수와 요청된 바이트 수가 포함됩니다. 결과 값은 0바이트가 요청되었거나 피어 소켓이 정상적인 종료를 수행했기 때문에 더 이상 바이트를 사용할 수 없는 경우에만 0입니다. 0바이트가 요청되면 수신 작업이 즉시 완료되거나 하나 이상의 바이트를 사용할 수 있을 때까지 완료되지 않을 수 있습니다(데이터를 사용하지 않음).

예외

Socket 닫혔습니다.

소켓에 액세스하려고 할 때 오류가 발생했습니다.

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

적용 대상

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

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

연결된 소켓에서 데이터를 받습니다.

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

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

반환

비동기 수신 작업을 나타내는 A ValueTask<TResult> 입니다. 해당 Result 속성의 값에는 0(0) 사이로 buffer 읽은 총 바이트 수와 요청된 바이트 수가 포함됩니다. 결과 값은 0바이트가 요청되었거나 피어 소켓이 정상적인 종료를 수행했기 때문에 더 이상 바이트를 사용할 수 없는 경우에만 0입니다. 0바이트가 요청되면 수신 작업이 즉시 완료되거나 하나 이상의 바이트를 사용할 수 있을 때까지 완료되지 않을 수 있습니다(데이터를 사용하지 않음).

예외

Socket 닫혔습니다.

소켓에 액세스하려고 할 때 오류가 발생했습니다.

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

적용 대상