Socket.ReceiveFrom 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터그램을 받고 소스 엔드포인트를 저장합니다.
오버로드
ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) |
지정된 SocketFlags를 사용하여 데이터 버퍼에 원하는 바이트 수를 받고 엔드포인트를 저장합니다. |
ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) |
지정된 SocketFlags를 사용하여 데이터 버퍼의 지정된 위치에 지정된 바이트 수의 데이터를 수신하고 엔드포인트를 저장합니다. |
ReceiveFrom(Span<Byte>, SocketFlags, EndPoint) |
지정된 SocketFlags를 사용하여 데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다. |
ReceiveFrom(Byte[], SocketFlags, EndPoint) |
지정된 SocketFlags를 사용하여 데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다. |
ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress) |
지정된 SocketFlags를 사용하여 데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다. |
ReceiveFrom(Span<Byte>, EndPoint) |
데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다. |
ReceiveFrom(Byte[], EndPoint) |
데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다. |
ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 SocketFlags를 사용하여 데이터 버퍼에 원하는 바이트 수를 받고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
매개 변수
- size
- Int32
수신 바이트 수입니다.
- socketFlags
- SocketFlags
SocketFlags 값의 비트 조합입니다.
반환
받은 바이트 수입니다.
예외
Socket이 닫혔습니다.
호출 스택에 있는 호출자에게 필요한 권한이 없는 경우
예제
다음 코드 예제에서는 원격 호스트에서 연결 없는 데이터그램을 받습니다. 및 버퍼 크기 SocketFlags 는 메서드에 ReceiveFrom 전달됩니다.
static void ReceiveFrom3()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "SWaiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, msg->Length, SocketFlags::None, senderRemote );
s->Close();
}
public static void ReceiveFrom3()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom3()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IPEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
s.Close()
End Sub
설명
메서드는 ReceiveFrom 매개 변수로 buffer
데이터를 읽고, 성공적으로 읽은 바이트 수를 반환하고, 데이터가 전송된 원격 호스트 엔드포인트를 캡처합니다. 이 메서드는 알 수 없는 호스트 또는 여러 호스트에서 연결 없는 데이터그램을 수신하려는 경우에 유용합니다.
이 오버로드는 수신 버퍼, 수신하려는 바이트 수, 필요한 SocketFlags및 EndPoint 원격 호스트를 나타내는 을 제공해야 합니다. 버퍼 오프셋의 기본값은 0입니다.
연결 없는 프로토콜을 사용하면 ReceiveFrom 는 로컬 네트워크 버퍼에 수신된 첫 번째 큐에 넣은 데이터그램을 읽습니다. 받는 데이터그램이 의 크기 buffer
ReceiveFrom 보다 크면 메서드는 가능한 한 많은 메시지로 채우고 buffer
을 throw합니다SocketException. 신뢰할 수 없는 프로토콜을 사용하는 경우 초과 데이터가 손실됩니다. 신뢰할 수 있는 프로토콜을 사용하는 경우 서비스 공급자가 초과 데이터를 보존하고 충분한 버퍼가 있는 메서드를 ReceiveFrom 호출하여 검색할 수 있습니다.
읽을 ReceiveFrom 수 있는 데이터가 없으면 데이터를 사용할 수 있을 때까지 메서드가 차단됩니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 ReceiveFrom 즉시 완료되고 을 throw합니다 SocketException. 속성을 사용하여 Available 데이터를 읽을 수 있는지 확인할 수 있습니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.
ReceiveFrom 는 연결 없는 프로토콜을 위한 것이지만 연결 지향 프로토콜도 사용할 수 있습니다. 이렇게 하려면 먼저 메서드를 호출하여 원격 호스트 연결을 설정하거나 메서드를 호출 ConnectAccept 하여 들어오는 원격 호스트 연결을 수락해야 합니다. 메서드를 호출 ReceiveFrom 하기 전에 연결을 설정하거나 수락하지 않으면 가 표시됩니다 SocketException. 메서드를 호출하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 ReceiveFrom 설정할 수도 있습니다.
연결 지향 소켓을 사용하면 ReceiveFrom 에서 매개 변수에 지정된 size
바이트 수까지 사용할 수 있는 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 ReceiveFrom 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.
참고
를 호출 ReceiveFrom하기 전에 메서드를 Socket 사용하여 Bind 를 로컬 엔드포인트에 명시적으로 바인딩해야 합니다. 그렇지 않으면 은 ReceiveFrom 을 throw합니다 SocketException. 를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.
참고
에 사용되는 의 EndPoint 는 AddressFamily 에 ReceiveFrom 사용된 SendTo의 EndPoint 와 AddressFamily 일치해야 합니다.
참고
애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.
추가 정보
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
적용 대상
ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 SocketFlags를 사용하여 데이터 버퍼의 지정된 위치에 지정된 바이트 수의 데이터를 수신하고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
매개 변수
- offset
- Int32
수신된 데이터를 저장할 buffer
매개 변수의 위치입니다.
- size
- Int32
수신 바이트 수입니다.
- socketFlags
- SocketFlags
SocketFlags 값의 비트 조합입니다.
반환
받은 바이트 수입니다.
예외
offset
가 0보다 작습니다.
또는
offset
이 buffer
의 길이보다 큽니다.
또는
size
가 0보다 작습니다.
또는
size
가 buffer
의 길이에서 오프셋 매개 변수 값을 뺀 크기보다 큰 경우
Socket이 닫혔습니다.
예제
다음 코드 예제에서는 원격 호스트에서 연결 없는 데이터그램을 받습니다. 오프셋, 버퍼 크기 및 SocketFlags 는 메서드에 ReceiveFrom 전달됩니다.
static void ReceiveFrom4()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "SWaiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, 0, msg->Length, SocketFlags::None, senderRemote );
s->Close();
}
public static void ReceiveFrom4()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom4()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IpEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
s.Close()
End Sub
설명
메서드는 ReceiveFrom 매개 변수로 buffer
데이터를 읽고, 성공적으로 읽은 바이트 수를 반환하고, 데이터가 전송된 원격 호스트 엔드포인트를 캡처합니다. 이 메서드는 알 수 없는 호스트 또는 여러 호스트에서 연결 없는 데이터그램을 수신하려는 경우에 유용합니다.
연결 없는 프로토콜을 사용하면 ReceiveFrom 는 로컬 네트워크 버퍼에 수신된 첫 번째 큐에 넣은 데이터그램을 읽습니다. 받는 데이터그램이 의 크기 buffer
ReceiveFrom 보다 크면 메서드는 가능한 한 많은 메시지로 채우고 buffer
을 throw합니다SocketException. 신뢰할 수 없는 프로토콜을 사용하는 경우 초과 데이터가 손실됩니다. 신뢰할 수 있는 프로토콜을 사용하는 경우 서비스 공급자가 초과 데이터를 보존하고 충분한 버퍼가 있는 메서드를 ReceiveFrom 호출하여 검색할 수 있습니다.
읽을 ReceiveFrom 수 있는 데이터가 없으면 데이터를 사용할 수 있을 때까지 메서드가 차단됩니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 ReceiveFrom 즉시 완료되고 을 throw합니다 SocketException. 속성을 사용하여 Available 데이터를 읽을 수 있는지 확인할 수 있습니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.
ReceiveFrom 는 연결 없는 프로토콜을 위한 것이지만 연결 지향 프로토콜도 사용할 수 있습니다. 이렇게 하려면 먼저 메서드를 호출하여 원격 호스트 연결을 설정하거나 메서드를 호출 ConnectAccept 하여 들어오는 원격 호스트 연결을 수락해야 합니다. 메서드SocketException를 호출 ReceiveFrom 하기 전에 연결을 설정하거나 수락하지 않으면 가 표시됩니다. 메서드를 호출 ReceiveFrom 하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 설정할 수도 있습니다.
연결 지향 소켓을 ReceiveFrom 사용하면 에서 매개 변수에 지정된 size
바이트 양까지 사용할 수 있는 만큼의 데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터가 수신된 ReceiveFrom 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.
참고
를 호출 ReceiveFrom하기 전에 메서드를 Socket 사용하여 Bind 를 로컬 엔드포인트에 명시적으로 바인딩해야 합니다. 그렇지 않으면 는 ReceiveFrom 을 throw합니다 SocketException. 을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.
참고
에 사용되는 의 는 AddressFamilyEndPoint 에 ReceiveFrom 사용된 SendTo의 EndPoint 와 AddressFamily 일치해야 합니다.
참고
애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.
추가 정보
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
적용 대상
ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 SocketFlags를 사용하여 데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
매개 변수
- socketFlags
- SocketFlags
SocketFlags 값의 비트 조합입니다.
반환
받은 바이트 수입니다.
예외
remoteEP
이(가) null
인 경우
소켓에 액세스하는 동안 오류가 발생했습니다.
Socket이 닫혔습니다.
적용 대상
ReceiveFrom(Byte[], SocketFlags, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 SocketFlags를 사용하여 데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer
매개 변수
- socketFlags
- SocketFlags
SocketFlags 값의 비트 조합입니다.
반환
받은 바이트 수입니다.
예외
소켓에 액세스하는 동안 오류가 발생했습니다.
Socket이 닫혔습니다.
호출 스택에 있는 호출자에게 필요한 권한이 없는 경우
예제
다음 코드 예제에서는 원격 호스트에서 연결 없는 데이터그램을 받습니다. SocketFlags 는 메서드에 ReceiveFrom 전달됩니다.
static void ReceiveFrom2()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "Waiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, SocketFlags::None, senderRemote );
s->Close();
}
public static void ReceiveFrom2()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IpEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom2()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IpEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
s.Close()
End Sub
설명
메서드는 ReceiveFrom 매개 변수로 buffer
데이터를 읽고, 성공적으로 읽은 바이트 수를 반환하고, 데이터가 전송된 원격 호스트 엔드포인트를 캡처합니다. 이 메서드는 알 수 없는 호스트 또는 여러 호스트에서 연결 없는 데이터그램을 수신하려는 경우에 유용합니다.
이 오버로드는 수신 버퍼, 필요한 SocketFlags및 원격 호스트를 나타내는 만 EndPoint 제공해야 합니다. 오프셋의 기본값은 0이고 크기는 버퍼 매개 변수의 길이로 기본 설정됩니다.
참고
를 호출 ReceiveFrom하기 전에 메서드를 Socket 사용하여 Bind 를 로컬 엔드포인트에 명시적으로 바인딩해야 합니다. 그렇지 않으면 는 ReceiveFrom 을 throw합니다 SocketException.
연결 없는 프로토콜을 사용하면 는 ReceiveFrom 로컬 네트워크 버퍼에 수신된 첫 번째 큐에 넣은 데이터그램을 읽습니다. 받는 데이터그램이 의 크기 buffer
ReceiveFrom 보다 크면 메서드는 가능한 한 많은 메시지로 채워 buffer
지고 을 throw합니다SocketException. 신뢰할 수 없는 프로토콜을 사용하는 경우 초과 데이터가 손실됩니다. 신뢰할 수 있는 프로토콜을 사용하는 경우 초과 데이터는 서비스 공급자에 의해 보존되며 충분한 버퍼가 있는 메서드를 ReceiveFrom 호출하여 검색할 수 있습니다.
읽을 ReceiveFrom 수 있는 데이터가 없으면 데이터를 사용할 수 있을 때까지 메서드가 차단됩니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 ReceiveFrom 즉시 완료되고 을 throw합니다 SocketException. 사용할 수 있습니다는 Available 데이터를 읽을 수 있는지 여부를 확인 하는 속성입니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.
ReceiveFrom 는 연결 없는 프로토콜을 위한 것이지만 연결 지향 프로토콜도 사용할 수 있습니다. 이렇게 하려면 먼저 메서드를 호출하여 원격 호스트 연결을 설정하거나 메서드를 호출 ConnectAccept 하여 들어오는 원격 호스트 연결을 수락해야 합니다. 메서드SocketException를 호출 ReceiveFrom 하기 전에 연결을 설정하거나 수락하지 않으면 가 표시됩니다. 메서드를 호출 ReceiveFrom 하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 설정할 수도 있습니다.
연결 지향 소켓을 사용하면 ReceiveFrom 의 크기까지 사용할 수 있는 만큼의 buffer
데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터가 수신된 ReceiveFrom 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.
참고
을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.
참고
에 사용되는 의 는 AddressFamilyEndPoint 에 ReceiveFrom 사용된 SendTo의 EndPoint 와 AddressFamily 일치해야 합니다.
참고
애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.
추가 정보
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
적용 대상
ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 SocketFlags를 사용하여 데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ receivedAddress);
public int ReceiveFrom (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, receivedAddress As SocketAddress) As Integer
매개 변수
- socketFlags
- SocketFlags
SocketFlags 값의 비트 조합입니다.
- receivedAddress
- SocketAddress
SocketAddress 이 메서드가 반환되면 원격 피어의 값으로 업데이트되는 instance.
반환
받은 바이트 수입니다.
예외
receivedAddress
이(가) null
인 경우
소켓에 액세스하는 동안 오류가 발생했습니다.
Socket이 닫혔습니다.
적용 대상
ReceiveFrom(Span<Byte>, EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(Span<System::Byte> buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (Span<byte> buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : Span<byte> * EndPoint -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), ByRef remoteEP As EndPoint) As Integer
매개 변수
반환
받은 바이트 수입니다.
예외
remoteEP
이(가) null
인 경우
소켓에 액세스하는 동안 오류가 발생했습니다.
Socket이 닫혔습니다.
적용 대상
ReceiveFrom(Byte[], EndPoint)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
데이터 버퍼에 데이터그램을 받고 엔드포인트를 저장합니다.
public:
int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), ByRef remoteEP As EndPoint) As Integer
매개 변수
반환
받은 바이트 수입니다.
예외
소켓에 액세스하는 동안 오류가 발생했습니다.
Socket이 닫혔습니다.
호출 스택에 있는 호출자에게 필요한 권한이 없는 경우
예제
다음 코드 예제에서는 원격 호스트에서 연결 없는 데이터그램을 받습니다.
static void ReceiveFrom1()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
// Binding is required with ReceiveFrom calls.
s->Bind( endPoint );
array<Byte>^ msg = gcnew array<Byte>(256);
Console::WriteLine( "Waiting to receive datagrams from client..." );
// This call blocks.
s->ReceiveFrom( msg, senderRemote );
s->Close();
}
public static void ReceiveFrom1()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
// Creates an IPEndPoint to capture the identity of the sending host.
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;
// Binding is required with ReceiveFrom calls.
s.Bind(endPoint);
byte[] msg = new Byte[256];
Console.WriteLine("Waiting to receive datagrams from client...");
// This call blocks.
s.ReceiveFrom(msg, ref senderRemote);
s.Close();
}
Public Shared Sub ReceiveFrom1()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
' Creates an IPEndPoint to capture the identity of the sending host.
Dim sender As New IPEndPoint(IPAddress.Any, 0)
Dim senderRemote As EndPoint = CType(sender, EndPoint)
' Binding is required with ReceiveFrom calls.
s.Bind(endPoint)
Dim msg() As Byte = New [Byte](255) {}
Console.WriteLine("Waiting to receive datagrams from client...")
' This call blocks.
s.ReceiveFrom(msg, senderRemote)
s.Close()
End Sub
설명
메서드는 ReceiveFrom 매개 변수로 buffer
데이터를 읽고, 성공적으로 읽은 바이트 수를 반환하고, 데이터가 전송된 원격 호스트 엔드포인트를 캡처합니다. 이 메서드는 알 수 없는 호스트 또는 여러 호스트에서 연결 없는 데이터그램을 수신하려는 경우에 유용합니다.
이 오버로드는 원격 호스트를 나타내는 수신 buffer
및 EndPoint 만 제공해야 합니다. 버퍼 오프셋의 기본값은 0입니다. 크기는 매개 변수의 buffer
길이로 기본 설정되고 값은 socketFlags
기본적으로 입니다 None.
참고
를 호출 ReceiveFrom하기 전에 메서드를 Socket 사용하여 Bind 를 로컬 엔드포인트에 명시적으로 바인딩해야 합니다. 그렇지 않으면 는 ReceiveFrom 을 throw합니다 SocketException.
연결 없는 프로토콜을 사용하면 는 ReceiveFrom 로컬 네트워크 버퍼에 수신된 첫 번째 큐에 넣은 데이터그램을 읽습니다. 받는 데이터그램이 의 크기 buffer
ReceiveFrom 보다 크면 메서드는 가능한 한 많은 메시지로 채우고 buffer
을 throw합니다SocketException. 신뢰할 수 없는 프로토콜을 사용하는 경우 초과 데이터가 손실됩니다. 신뢰할 수 있는 프로토콜을 사용하는 경우 서비스 공급자가 초과 데이터를 보존하고 충분한 버퍼가 있는 메서드를 ReceiveFrom 호출하여 검색할 수 있습니다.
읽을 ReceiveFrom 수 있는 데이터가 없으면 데이터를 사용할 수 있을 때까지 메서드가 차단됩니다. 비차단 모드에 있고 프로토콜 스택 버퍼에서 사용할 수 있는 데이터가 없는 경우 메서드는 ReceiveFrom 즉시 완료되고 을 throw합니다 SocketException. 속성을 사용하여 Available 데이터를 읽을 수 있는지 확인할 수 있습니다. 가 0이 아닌 경우 Available 수신 작업을 다시 시도합니다.
ReceiveFrom 는 연결 없는 프로토콜을 위한 것이지만 연결 지향 프로토콜도 사용할 수 있습니다. 이렇게 하려면 먼저 메서드를 호출하여 원격 호스트 연결을 설정하거나 메서드를 호출 ConnectAccept 하여 들어오는 원격 호스트 연결을 수락해야 합니다. 메서드를 호출 ReceiveFrom 하기 전에 연결을 설정하거나 수락하지 않으면 가 표시됩니다 SocketException. 메서드를 호출하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 ReceiveFrom 설정할 수도 있습니다.
연결 지향 소켓을 사용하면 ReceiveFrom 의 크기까지 사용할 수 있는 만큼의 buffer
데이터를 읽습니다. 원격 호스트가 메서드와의 Shutdown 연결을 종료 Socket 하고 사용 가능한 모든 데이터를 받은 ReceiveFrom 경우 메서드는 즉시 완료되고 0바이트를 반환합니다.
참고
를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.
참고
에 사용되는 의 EndPoint 는 AddressFamily 에 ReceiveFrom 사용된 SendTo의 EndPoint 와 AddressFamily 일치해야 합니다.
참고
애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.
추가 정보
적용 대상
.NET