Socket.ReceiveMessageFrom 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
| Name | Description |
|---|---|
| ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation) |
지정된 데이터 버퍼를 사용하여 SocketFlags지정된 데이터 바이트 수를 데이터 버퍼의 지정된 위치에 수신하고 엔드포인트 및 패킷 정보를 저장합니다. |
| ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation) |
지정된 데이터 버퍼를 사용하여 |
ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 데이터 버퍼를 사용하여 SocketFlags지정된 데이터 바이트 수를 데이터 버퍼의 지정된 위치에 수신하고 엔드포인트 및 패킷 정보를 저장합니다.
public:
int ReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % remoteEP, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.ReceiveMessageFrom : byte[] * int * int * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function ReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, ByRef socketFlags As SocketFlags, ByRef remoteEP As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer
매개 변수
- offset
- Int32
받은 데이터를 저장할 매개 변수의 위치 buffer 입니다.
- size
- Int32
받을 바이트 수입니다.
- socketFlags
- SocketFlags
값의 비트 조합입니다 SocketFlags .
- ipPacketInformation
- IPPacketInformation
IPPacketInformation 보유 주소 및 인터페이스 정보입니다.
반품
받은 바이트 수입니다.
예외
offset 가 0보다 작습니다.
-또는-
offset 가 .의 buffer길이보다 큰 경우
-또는-
size 가 0보다 작습니다.
-또는-
size 가 오프셋 매개 변수의 buffer 값을 뺀 값보다 큰 경우
socketFlags 가 유효한 값 조합이 아닌 경우
-또는-
속성이 LocalEndPoint 설정되지 않았습니다.
-또는-
.NET Framework는 AMD 64비트 프로세서에서 실행됩니다.
-또는-
소켓에 액세스하려고 할 때 오류가 발생했습니다.
Socket 닫혔습니다.
설명
이 메서드는 ReceiveMessageFrom 데이터를 매개 변수로 buffer 읽고, 성공적으로 읽은 바이트 수를 반환하고, 데이터가 전송된 원격 호스트 엔드포인트와 수신된 패킷에 대한 정보를 캡처합니다.
이 ReceiveMessageFrom 메서드는 주로 연결 없는 소켓에서 메시지 데이터를 수신하는 데 사용됩니다. 소켓의 로컬 주소를 알고 있어야 합니다. 이 메서드는 데이터그램 및 원시 소켓에서만 사용할 수 있습니다. 소켓은 소켓 유형을 이 메서드를 호출하기 Dgram 전으로 설정하거나 Raw 호출하기 전에 초기화해야 합니다. 이 작업은 .를 사용하여 Socket소켓이 생성될 때 수행할 수 있습니다.
메시지 지향 소켓의 경우 들어오는 메시지가 매개 변수에 buffer 지정된 총 크기까지 매개 변수에 size 배치됩니다. 매개 변수는 offset 데이터의 위치가 buffer 결정됩니다. 이 메서드에 buffer 배치된 데이터의 실제 크기는 메서드에서 ReceiveMessageFrom 반환됩니다.
메서드는 ReceiveMessageFrom 지정된 경우 소켓 옵션을 처음 호출PacketInformation할 true 때 자동으로 설정합니다Socket. 그러나 반환 IPPacketInformation 된 개체는 소켓 옵션이 설정된 후 로컬 컴퓨터에 도착하는 패킷에만 유효합니다. 소켓이 로컬 엔드포인트에 바인딩될 때(명시적으로 메서드에 의해 Bind 또는 암시적으로 , 또는 Connect 메서드 중 하나에 의해) 및 메서드에 대한 ConnectAsyncSendToSendToAsync첫 번째 호출 사이에 패킷을 ReceiveMessageFrom 보내는 경우 메서드 호출 ReceiveMessageFrom 은 이러한 패킷에 대해 잘못된 IPPacketInformation 개체를 반환합니다.
모든 IPPacketInformation 개체가 유효한지 확인하려면 애플리케이션이 메서드를 사용하여 PacketInformation 로컬 엔드포인트에 true 바인딩되기 전에 소켓 옵션을 설정 SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) 해야 합니다.
애플리케이션은 데이터그램이 ipPacketInformation 유니캐스트, 멀티캐스트 또는 브로드캐스트 주소를 사용하여 전송되었는지 알아야 하는 경우 매개 변수를 검사할 수 있습니다.
메모
사용된 항목은 AddressFamilyEndPoint 에 ReceiveFrom 사용된 AddressFamily항목과 EndPointSendTo 일치해야 합니다.
메모
이 멤버는 애플리케이션에서 네트워크 추적을 사용하도록 설정할 때 추적 정보를 출력합니다. 자세한 내용은 .NET Framework의Network 추적 참조하세요.
추가 정보
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
적용 대상
ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
지정된 데이터 버퍼를 사용하여 socketFlags지정된 데이터 바이트 수를 데이터 버퍼의 지정된 위치에 수신하고 엔드포인트 및 패킷 정보를 저장합니다.
public:
int ReceiveMessageFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % remoteEP, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int ReceiveMessageFrom(Span<byte> buffer, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.ReceiveMessageFrom : Span<byte> * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function ReceiveMessageFrom (buffer As Span(Of Byte), ByRef socketFlags As SocketFlags, ByRef remoteEP As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer
매개 변수
- socketFlags
- SocketFlags
값의 비트 조합입니다 SocketFlags .
- ipPacketInformation
- IPPacketInformation
IPPacketInformation 보유 주소 및 인터페이스 정보입니다.
반품
받은 바이트 수입니다.
예외
개체가 Socket 닫혔습니다.
EndPoint remoteEP는 .입니다null.
사용된 ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation) 항목은 EndPointAddressFamily SendTo에 사용된 항목과 EndPoint 일치 AddressFamily 해야 합니다.
Socket 개체가 차단 모드가 아니고 이 동기 호출을 수락할 수 없습니다. 이 작업을 수행하기 전에 Bind 메서드를 호출해야 합니다.