Socket.Receive 메서드

정의

바인딩된 Socket에서 데이터를 받습니다.

오버로드

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

Receive(Span<Byte>, SocketFlags, SocketError)

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

지정된 Socket를 사용하여 바인딩된 SocketFlags의 데이터를 받아 수신 버퍼 목록에 넣습니다.

Receive(Byte[], Int32, SocketFlags)

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags에서 원하는 바이트 수의 데이터를 받습니다.

Receive(Span<Byte>, SocketFlags)

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

Receive(Byte[], Int32, Int32, SocketFlags)

지정된 Socket를 사용하여 수신 버퍼의 특정 오프셋 위치에 바인딩된 SocketFlags의 원하는 바이트 수를 받습니다.

Receive(Byte[], SocketFlags)

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

Receive(Span<Byte>)

수신 버퍼에 바인딩된 Socket의 데이터를 받습니다.

Receive(IList<ArraySegment<Byte>>)

바인딩된 Socket의 데이터를 받아 수신 버퍼 목록에 넣습니다.

Receive(Byte[])

수신 버퍼에 바인딩된 Socket의 데이터를 받습니다.

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

지정된 Socket를 사용하여 바인딩된 SocketFlags의 데이터를 받아 수신 버퍼 목록에 넣습니다.

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

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

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

매개 변수

buffer
Byte[]

수신된 데이터에 대한 스토리지 위치인 Byte 형식의 배열입니다.

offset
Int32

수신된 데이터를 저장할 buffer 매개 변수의 위치입니다.

size
Int32

수신 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

errorCode
SocketError

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

반환

받은 바이트 수입니다.

예외

buffer이(가) null인 경우

offset 가 0보다 작습니다.

또는

offsetbuffer의 길이보다 큽니다.

또는

size 가 0보다 작습니다.

또는

sizebuffer 의 길이에서 offset 매개 변수 값을 뺀 크기보다 큰 경우

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값이 초과된 경우 호출은 Receive 을 throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 소켓에 액세스하는 동안 오류가 발생했습니다. 아래의 설명을 참조하세요. 속성을 사용하여 Available 데이터를 읽을 수 있는지 확인할 수 있습니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 SocketReceive 를 사용하는 경우 메서드는 크기 매개 변수에 지정된 바이트 수까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수의 buffer 크기보다 크고 메시지 buffer 의 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

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

추가 정보

적용 대상

Receive(Span<Byte>, SocketFlags, SocketError)

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

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

매개 변수

buffer
Span<Byte>

받는 데이터에 대한 스토리지 위치인 바이트의 범위입니다.

socketFlags
SocketFlags

보내기 및 받기 동작을 지정하는 열거형 값의 비트 조합입니다.

errorCode
SocketError

이 메서드가 반환될 때 소켓에 대한 오류 코드를 정의하는 열거형 값 중 하나를 포함합니다.

반환

받은 바이트 수입니다.

예외

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

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

이 오버로드는 수신 버퍼만 제공해야 합니다. 버퍼 오프셋의 기본값은 0이고, 크기는 버퍼 매개 변수의 길이로, 값은 SocketFlags 기본값으로 None입니다.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출이 Receive 을 throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 속성을 사용하여 Available 데이터를 읽을 수 있는지 확인할 수 있습니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 SocketReceive 를 사용하는 경우 메서드는 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수의 buffer 크기보다 크고 메시지 buffer 의 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

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

지정된 Socket를 사용하여 바인딩된 SocketFlags의 데이터를 받아 수신 버퍼 목록에 넣습니다.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

매개 변수

buffers
IList<ArraySegment<Byte>>

받은 데이터를 포함하는 ArraySegment<T> 형식의 Byte 목록입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

errorCode
SocketError

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

반환

받은 바이트 수입니다.

예외

buffersnull입니다.

또는

buffers 수가 0인 경우

소켓에 액세스하려고 시도하는 동안 오류가 발생한 경우.

Socket이 닫혔습니다.

설명

이 메서드는 매개 변수로 buffers 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출할 수 있습니다.

이 오버로드를 사용하려면 하나 이상의 수신 버퍼를 제공해야 합니다. 기본값은 SocketFlags 입니다 None.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트 연결에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 ReceiveSocketExceptionthrow합니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 buffersbuffers 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상

Receive(Byte[], Int32, SocketFlags)

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

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags에서 원하는 바이트 수의 데이터를 받습니다.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

매개 변수

buffer
Byte[]

수신된 데이터에 대한 스토리지 위치인 Byte 형식의 배열입니다.

size
Int32

수신 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

받은 바이트 수입니다.

예외

buffer이(가) null인 경우

sizebuffer의 크기를 초과한 경우

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

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

예제

다음은 에 있는 buffer데이터를 수신하고 에 대해 SocketFlags를 지정합니다None.

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage =  "Default HTML page on ";
strRetPage->Concat( server,  ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
   bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
   strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

' Receive the host home page content and loop until all the data is received.

'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

Dim i As Integer

While bytes > 0

  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

End While

설명

메서드는 Receive 매개 변수로 buffer 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

이 오버로드는 수신 버퍼, 수신하려는 바이트 수 및 필요한 SocketFlags만 제공해야 합니다.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 Receive 을 throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 SocketReceive 를 사용하는 경우 메서드는 매개 변수에 지정된 size 바이트 수까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 bufferbuffer 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상

Receive(Span<Byte>, SocketFlags)

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

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags) As Integer

매개 변수

buffer
Span<Byte>

받는 데이터에 대한 스토리지 위치인 바이트의 범위입니다.

socketFlags
SocketFlags

보내기 및 받기 동작을 지정하는 열거형 값의 비트 조합입니다.

반환

받은 바이트 수입니다.

예외

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

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

이 오버로드는 수신 버퍼만 제공해야 합니다. 버퍼 오프셋의 기본값은 0이고, 크기는 버퍼 매개 변수의 길이로 기본 설정되며, 값은 SocketFlags 기본값으로 입니다 None.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 을 Receive throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 bufferbuffer 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

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

추가 정보

적용 대상

Receive(Byte[], Int32, Int32, SocketFlags)

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

지정된 Socket를 사용하여 수신 버퍼의 특정 오프셋 위치에 바인딩된 SocketFlags의 원하는 바이트 수를 받습니다.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

매개 변수

buffer
Byte[]

수신된 데이터의 스토리지 위치에 해당하는 형식 Byte의 배열입니다.

offset
Int32

받을 데이터를 저장할 buffer 내의 위치입니다.

size
Int32

수신 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

받은 바이트 수입니다.

예외

buffer이(가) null인 경우

offset 가 0보다 작습니다.

또는

offsetbuffer의 길이보다 큽니다.

또는

size 가 0보다 작습니다.

또는

sizebuffer의 길이에서 offset 매개 변수 값을 뺀 크기보다 큰 경우

socketFlags가 값의 유효한 조합이 아닌 경우

또는

LocalEndPoint 속성이 설정되지 않은 경우

또는

Socket에 액세스하는 동안 운영 체제 오류가 발생한 경우

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

예제

다음 코드 예제에서는 연결된 Socket에 대한 데이터를 수신하기 전에 데이터 버퍼, 오프셋, 크기 및 소켓 플래그를 지정합니다.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 Receive 을 throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 소켓에 액세스하는 동안 오류가 발생했습니다. 아래의 설명을 참조하세요. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 SocketReceive 를 사용하는 경우 메서드는 크기 매개 변수에 지정된 바이트 수까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 bufferbuffer 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상

Receive(Byte[], SocketFlags)

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

지정된 Socket를 사용하여 수신 버퍼에 바인딩된 SocketFlags의 데이터를 받습니다.

public:
 int Receive(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), socketFlags As SocketFlags) As Integer

매개 변수

buffer
Byte[]

수신된 데이터에 대한 스토리지 위치인 Byte 형식의 배열입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

받은 바이트 수입니다.

예외

buffer이(가) null인 경우

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

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

예제

다음 코드 예제에서는 데이터 버퍼를 지정하고 SocketFlags 연결된 Socket에 대한 데이터를 수신합니다.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

이 오버로드는 수신 버퍼와 필요한 만 제공해야 합니다 SocketFlags. 버퍼 오프셋의 기본값은 0이고 크기는 기본적으로 바이트 매개 변수의 길이로 설정됩니다.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

읽을 Receive 수 있는 데이터가 없으면 데이터를 사용할 수 있을 때까지 메서드가 차단됩니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용할 수 있는 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 추가된 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 bufferbuffer 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상

Receive(Span<Byte>)

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

수신 버퍼에 바인딩된 Socket의 데이터를 받습니다.

public:
 int Receive(Span<System::Byte> buffer);
public int Receive (Span<byte> buffer);
member this.Receive : Span<byte> -> int
Public Function Receive (buffer As Span(Of Byte)) As Integer

매개 변수

buffer
Span<Byte>

받는 데이터에 대한 스토리지 위치인 바이트의 범위입니다.

반환

받은 바이트 수입니다.

예외

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

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

이 오버로드는 수신 버퍼만 제공해야 합니다. 버퍼 오프셋의 기본값은 0이고, 크기는 버퍼 매개 변수의 길이로 기본 설정되며, 값은 SocketFlags 기본값으로 입니다 None.

연결 지향 프로토콜을 사용하는 경우 를 호출하기 전에 Receive를 호출 Connect 하여 원격 호스트 연결을 설정하거나 Accept 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 을 Receive throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 bufferbuffer 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

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

추가 정보

적용 대상

Receive(IList<ArraySegment<Byte>>)

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

바인딩된 Socket의 데이터를 받아 수신 버퍼 목록에 넣습니다.

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

매개 변수

buffers
IList<ArraySegment<Byte>>

받은 데이터를 포함하는 ArraySegment<T> 형식의 Byte 목록입니다.

반환

받은 바이트 수입니다.

예외

buffer 매개 변수가 null인 경우

소켓에 액세스하려고 시도하는 동안 오류가 발생한 경우.

Socket이 닫혔습니다.

설명

이 메서드는 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출할 수 있습니다.

이 오버로드를 사용하려면 하나 이상의 수신 버퍼를 제공해야 합니다.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트 연결에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 Receive 을 throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 추가된 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 buffersbuffers 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

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

적용 대상

Receive(Byte[])

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

수신 버퍼에 바인딩된 Socket의 데이터를 받습니다.

public:
 int Receive(cli::array <System::Byte> ^ buffer);
public int Receive (byte[] buffer);
member this.Receive : byte[] -> int
Public Function Receive (buffer As Byte()) As Integer

매개 변수

buffer
Byte[]

수신된 데이터에 대한 스토리지 위치인 Byte 형식의 배열입니다.

반환

받은 바이트 수입니다.

예외

buffer이(가) null인 경우

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

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

예제

다음 코드 예제에서는 연결된 Socket에 대한 데이터를 수신합니다.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

설명

메서드는 Receive 버퍼 매개 변수로 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출 Receive 할 수 있습니다.

이 오버로드는 수신 버퍼만 제공해야 합니다. 버퍼 오프셋의 기본값은 0이고, 크기는 버퍼 매개 변수의 길이로 기본 설정되며, 값은 SocketFlags 기본값으로 입니다 None.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 Receive 을 throw합니다 SocketException. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 대기 중인 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 bufferbuffer 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상

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

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

지정된 Socket를 사용하여 바인딩된 SocketFlags의 데이터를 받아 수신 버퍼 목록에 넣습니다.

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

매개 변수

buffers
IList<ArraySegment<Byte>>

받은 데이터를 포함하는 ArraySegment<T> 형식의 Byte 목록입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

받은 바이트 수입니다.

예외

buffers이(가) null인 경우

또는

buffers 수가 0인 경우

소켓에 액세스하려고 시도하는 동안 오류가 발생한 경우.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 연결된 Socket에서 데이터를 수신하는 방법을 보여 줍니다.


// Build the buffers for the receive.
List<ArraySegment<Byte> >^ receiveBuffers = 
    gcnew List<ArraySegment<Byte> >(2);

array<Byte>^ bigBuffer = gcnew array<Byte>(1024);

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
receiveBuffers->Add(ArraySegment<Byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
receiveBuffers->Add(
    ArraySegment<Byte>(bigBuffer, 20, 500));

tcpSocket->Receive(receiveBuffers);

Console::WriteLine("{0}", 
    asciiEncoding->GetString(bigBuffer));

// Build the buffers for the receive.
List<ArraySegment<byte>> recvBuffers =
                         new List<ArraySegment<byte>>(2);

byte[] bigBuffer = new byte[1024];

// Specify the first buffer segment (2 bytes, starting
// at the 4th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>(bigBuffer, 20, 500));

int bytesReceived = mySocket.Receive(recvBuffers);

Console.WriteLine("{0}", ASCII.GetString(bigBuffer));

설명

이 메서드는 매개 변수로 buffers 데이터를 읽고 성공적으로 읽은 바이트 수를 반환합니다. 연결 지향 소켓과 연결 없는 소켓 모두에서 를 호출할 수 있습니다.

이 오버로드를 사용하려면 하나 이상의 수신 버퍼를 제공해야 합니다. 기본값은 SocketFlags 입니다 None.

연결 지향 프로토콜을 사용하는 경우 를 호출하여 원격 호스트 연결을 설정하거나 Accept 를 호출 ConnectReceive하기 전에 들어오는 연결을 수락해야 합니다. 메서드는 Receive 또는 Accept 메서드에 설정된 Connect 원격 호스트 연결에서 도착하는 데이터만 읽습니다. 연결 없는 프로토콜을 사용하는 경우 메서드를 ReceiveFrom 사용할 수도 있습니다. ReceiveFrom 을 사용하면 모든 호스트에서 도착하는 데이터를 받을 수 있습니다.

데이터를 읽을 Receive 수 없는 경우 를 사용하여 Socket.ReceiveTimeout제한 시간 값을 설정하지 않는 한 메서드는 데이터를 사용할 수 있을 때까지 차단합니다. 제한 시간 값을 초과하면 호출에서 ReceiveSocketExceptionthrow합니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 Receive 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.

연결 지향 Socket를 사용하는 경우 메서드는 Receive 버퍼 크기까지 사용 가능한 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 Receive 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.

연결 없는 SocketReceive 를 사용하는 경우 메서드에서 지정한 대상 주소에서 큐에 추가된 첫 번째 데이터그램을 Connect 읽습니다. 수신하는 데이터그램이 매개 변수 크기보다 크고 메시지 buffersbuffers 첫 번째 부분으로 채워지면 초과 데이터가 손실되고 이 SocketException throw됩니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

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

추가 정보

적용 대상