Socket.Receive Methode

Definition

Empfängt Daten von einem gebundenen Socket.

Überlädt

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

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

Receive(Span<Byte>, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

Receive(Byte[], Int32, SocketFlags)

Empfängt die angegebene Anzahl von Datenbytes aus einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

Receive(Span<Byte>, SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Empfängt die angegebene Anzahl von Bytes aus einem gebundenen Socket an der angegebenen Offsetposition des Empfangspuffers, wobei die angegebenen SocketFlags verwendet werden.

Receive(Byte[], SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

Receive(Span<Byte>)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.

Receive(IList<ArraySegment<Byte>>)

Empfängt Daten von einem gebundenen Socket und fügt sie in die Liste der Empfangspuffer ein.

Receive(Byte[])

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.

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

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das der Speicherort für die empfangenen Daten ist.

offset
Int32

Die Position im buffer-Parameter, an der die empfangenen Daten gespeichert werden sollen.

size
Int32

Die Anzahl der zu empfangenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffer ist null.

offset ist kleiner als 0.

- oder -

offset ist größer als die Länge von buffer.

- oder -

size ist kleiner als 0.

- oder -

size ist größer als die Länge von buffer minus dem Wert des offset -Parameters.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

Die Receive Methode liest Daten in den Pufferparameter und gibt die Anzahl der Bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der Connect -Methode oder Accept eingerichtet ist. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host eintreffen.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst einen aus SocketException. Fehler beim Versuch, auf den Socket zuzugreifen. Weitere Informationen finden Sie unter Hinweise. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive -Methode so viele Daten, wie verfügbar sind, bis zur Anzahl von Bytes, die durch den Size-Parameter angegeben werden. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer wird mit dem ersten Teil der Nachricht gefüllt, gehen die überschüssigen Daten verloren und ein SocketException wird ausgelöst.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

Receive(Span<Byte>, SocketFlags, SocketError)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Span<Byte>

Eine Spanne von Bytes, die der Speicherort für die empfangenen Daten ist.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.

errorCode
SocketError

Diese Methode gibt einen der Enumerationswerte zurück, der Fehlercodes für den Socket definiert.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

Die Receive Methode liest Daten in den Pufferparameter und gibt die Anzahl der Bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Für diese Überladung müssen Sie nur einen Empfangspuffer bereitstellen. Der Pufferoffset ist standardmäßig 0, die Größe wird standardmäßig auf die Länge des Pufferparameters festgelegt, und der SocketFlags Wert ist standardmäßig auf None.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der Connect -Methode oder Accept eingerichtet ist. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host eintreffen.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wird, löst der Receive Aufruf einen aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und im Protokollstapelpuffer keine Daten verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst einen aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive Methode so viele Daten, wie verfügbar sind, bis zur Größe des Puffers. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer wird mit dem ersten Teil der Nachricht gefüllt, gehen die überschüssigen Daten verloren und ein SocketException wird ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

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

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste mit ArraySegment<T>s vom Typ Byte, die die empfangenen Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffers ist null.

- oder -

buffers.Count ist 0 (null).

Beim Zugriff auf den Socket ist ein Fehler aufgetreten.

Der Socket wurde geschlossen.

Hinweise

Diese Methode liest Daten in den buffers Parameter ein und gibt die Anzahl der Bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen.

Für diese Überladung müssen Sie mindestens einen Empfangspuffer bereitstellen. Der SocketFlags Wert ist standardmäßig auf None.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von der Remotehostverbindung eingehen, die in der Connect -Methode oder Accept eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host eintreffen.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst einen aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive Methode so viele Daten, wie verfügbar sind, bis zur Größe des Puffers. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden,Receive liest das erste Datagramm in der Warteschlange aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffers Parameters ist, buffers wird mit dem ersten Teil der Nachricht gefüllt, gehen die überschüssigen Daten verloren und ein SocketException wird ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

Receive(Byte[], Int32, SocketFlags)

Empfängt die angegebene Anzahl von Datenbytes aus einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das der Speicherort für die empfangenen Daten ist.

size
Int32

Die Anzahl der zu empfangenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffer ist null.

size ist größer als buffer.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Der folgende Empfängt die in gefundenen bufferDaten und gibt für SocketFlagsanNone.

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

Hinweise

Die Receive -Methode liest Daten in den buffer Parameter ein und gibt die Anzahl der Bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer, die Anzahl der Bytes, die Sie empfangen möchten, und die erforderliche SocketFlagsbereitstellen.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der Connect -Methode oder Accept eingerichtet ist. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host eintreffen.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die - Receive Methode sofort abgeschlossen und löst einen aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive -Methode so viele Daten, wie verfügbar sind, bis zur Anzahl von Bytes, die durch den size Parameter angegeben werden. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer wird mit dem ersten Teil der Nachricht gefüllt, gehen die überschüssigen Daten verloren und ein SocketException wird ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

Receive(Span<Byte>, SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Span<Byte>

Eine Spanne von Bytes, die der Speicherort für die empfangenen Daten ist.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

Die Receive Methode liest Daten in den Pufferparameter und gibt die Anzahl der Bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Für diese Überladung müssen Sie nur einen Empfangspuffer bereitstellen. Der Pufferoffset ist standardmäßig 0, die Größe wird standardmäßig auf die Länge des Pufferparameters festgelegt, und der SocketFlags Wert ist standardmäßig auf None.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der Connect -Methode oder Accept eingerichtet ist. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host eintreffen.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wird, löst der Receive Aufruf einen aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive Methode sofort abgeschlossen und löst einen aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive Methode so viele Daten, wie verfügbar sind, bis zur Größe des Puffers. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange von der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer wird mit dem ersten Teil der Nachricht gefüllt, die überschüssigen Daten gehen verloren, und ein SocketException wird ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

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

Empfängt die angegebene Anzahl von Bytes aus einem gebundenen Socket an der angegebenen Offsetposition des Empfangspuffers, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Byte[]

Ein Array des Typs Byte, bei dem es sich um den Speicherort für empfangene Daten handelt.

offset
Int32

Die Position im buffer, an der die empfangenen Daten gespeichert werden sollen.

size
Int32

Die Anzahl der zu empfangenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffer ist null.

offset ist kleiner als 0.

- oder -

offset ist größer als die Länge von buffer.

- oder -

size ist kleiner als 0.

- oder -

size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.

socketFlags ist keine gültige Kombination von Werten.

- oder -

Die LocalEndPoint-Eigenschaft wurde nicht festgelegt.

- oder -

Beim Zugriff auf den Socket tritt ein Betriebssystemfehler auf.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Das folgende Codebeispiel gibt einen Datenpuffer, einen Offset, eine Größe und ein Socketflag an, bevor Daten zu einem verbundenen empfangen Socketwerden.

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

Hinweise

Die Receive -Methode liest Daten in den Pufferparameter und gibt die Anzahl der bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der - oder Accept -ConnectMethode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host empfangen werden.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf eine aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst eine aus SocketException. Fehler beim Versuch, auf den Socket zuzugreifen. Weitere Informationen finden Sie weiter unten in den Hinweisen. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie ein verbindungsorientiertes Socketverwenden, liest die Receive -Methode so viele daten, wie verfügbar sind, bis zu der Anzahl von Bytes, die vom size-Parameter angegeben werden. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer mit dem ersten Teil der Nachricht gefüllt wird, gehen die überschüssigen Daten verloren, und es wird ein SocketException ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

Receive(Byte[], SocketFlags)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das der Speicherort für die empfangenen Daten ist.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffer ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Im folgenden Codebeispiel wird ein Datenpuffer und SocketFlags für den Empfang von Daten in einem verbundenen Socketangegeben.

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

Hinweise

Die Receive -Methode liest Daten in den Pufferparameter und gibt die Anzahl der bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer und die erforderliche SocketFlagsangeben. Der Pufferoffset ist standardmäßig 0, und die Größe ist standardmäßig auf die Länge des Byteparameters festgelegt.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der - oder Accept -ConnectMethode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host empfangen werden.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst eine aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 (null) ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie eine verbindungsorientierte Socketverwenden, liest die Receive -Methode bis zur Größe des Puffers so viele Daten, wie verfügbar sind. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer mit dem ersten Teil der Nachricht gefüllt wird, gehen die überschüssigen Daten verloren, und es wird ein SocketException ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

Receive(Span<Byte>)

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.

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

Parameter

buffer
Span<Byte>

Eine Spanne von Bytes, die der Speicherort für die empfangenen Daten ist.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

Die Receive -Methode liest Daten in den Pufferparameter und gibt die Anzahl der bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Für diese Überladung müssen Sie nur einen Empfangspuffer bereitstellen. Der Pufferoffset ist standardmäßig 0, die Größe ist standardmäßig die Länge des Pufferparameters, und der SocketFlags Wert ist standardmäßig auf None.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der - oder Accept -ConnectMethode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host empfangen werden.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wird, löst der Receive Aufruf eine aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst eine aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie einen verbindungsorientierten Socketverwenden, liest die Receive -Methode bis zur Größe des Puffers so viele Daten, wie verfügbar sind. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer mit dem ersten Teil der Nachricht gefüllt wird, gehen die überschüssigen Daten verloren, und ein SocketException wird ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

Receive(IList<ArraySegment<Byte>>)

Empfängt Daten von einem gebundenen Socket und fügt sie in die Liste der Empfangspuffer ein.

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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste mit ArraySegment<T>s vom Typ Byte, die die empfangenen Daten enthält.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

Der buffer-Parameter ist null.

Beim Zugriff auf den Socket ist ein Fehler aufgetreten.

Der Socket wurde geschlossen.

Hinweise

Diese Methode liest Daten in den buffers-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen.

Für diese Überladung müssen Sie einen oder mehrere Empfangspuffer bereitstellen.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von der Remotehostverbindung empfangen werden, die in der - oder Accept -ConnectMethode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host empfangen werden.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf eine aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst eine aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie ein verbindungsorientiertes Socketverwenden, liest die Receive -Methode bis zur Größe des Puffers so viele Daten, wie verfügbar sind. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffers Parameters ist, buffers mit dem ersten Teil der Nachricht gefüllt wird, gehen die überschüssigen Daten verloren, und es wird ein SocketException ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.

Hinweis Dieses Mitglied gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Gilt für:

Receive(Byte[])

Empfängt Daten von einem gebundenen Socket in einem Empfangspuffer.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das der Speicherort für die empfangenen Daten ist.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffer ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Im folgenden Codebeispiel werden Daten für eine verbundene Socketempfangen.

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

Hinweise

Die Receive -Methode liest Daten in den Pufferparameter und gibt die Anzahl der bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Für diese Überladung müssen Sie nur einen Empfangspuffer bereitstellen. Der Pufferoffset ist standardmäßig 0, die Größe ist standardmäßig die Länge des Pufferparameters, und der SocketFlags Wert ist standardmäßig auf None.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von dem Remotehost empfangen werden, der in der - oder Accept -ConnectMethode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host empfangen werden.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf eine aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst eine aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie ein verbindungsorientiertes Socketverwenden, liest die Receive -Methode bis zur Größe des Puffers so viele Daten, wie verfügbar sind. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste Datagramm in der Warteschlange aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffer Parameters ist, buffer mit dem ersten Teil der Nachricht gefüllt wird, gehen die überschüssigen Daten verloren, und es wird ein SocketException ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

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

Empfängt Daten von einem gebundenen Socket in der Liste der Empfangspuffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste mit ArraySegment<T>s vom Typ Byte, die die empfangenen Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Gibt zurück

Die Anzahl der empfangenen Bytes.

Ausnahmen

buffers ist null.

- oder -

buffers.Count ist 0 (null).

Beim Zugriff auf den Socket ist ein Fehler aufgetreten.

Der Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Daten auf einem verbundenen Socketempfangen werden.


// 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));

Hinweise

Diese Methode liest Daten in den buffers Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen.

Für diese Überladung müssen Sie einen oder mehrere Empfangspuffer bereitstellen. Der SocketFlags Wert ist Nonestandardmäßig .

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept um eine eingehende Verbindung zu akzeptieren, bevor Sie aufrufen Receive. Die Receive -Methode liest nur Daten, die von der Remotehostverbindung empfangen werden, die in der - oder Accept -ConnectMethode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom -Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Daten zu empfangen, die von einem beliebigen Host empfangen werden.

Wenn keine Daten zum Lesen verfügbar sind, blockiert die Receive -Methode, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mithilfe Socket.ReceiveTimeoutvon festgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf eine aus SocketException. Wenn Sie sich im nicht blockierenden Modus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive -Methode sofort abgeschlossen und löst eine aus SocketException. Sie können die Available -Eigenschaft verwenden, um zu bestimmen, ob Daten zum Lesen verfügbar sind. Wenn Available ungleich 0 ist, wiederholen Sie den Empfangsvorgang.

Wenn Sie ein verbindungsorientiertes Socketverwenden, liest die Receive -Methode bis zur Größe des Puffers so viele Daten, wie verfügbar sind. Wenn der Remotehost die Verbindung mit der SocketShutdown -Methode beendet und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses Socketverwenden, Receive liest das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse, die Sie in der Connect -Methode angeben. Wenn das empfangene Datagramm größer als die Größe des buffers Parameters ist, buffers mit dem ersten Teil der Nachricht gefüllt wird, gehen die überschüssigen Daten verloren, und es wird ein SocketException ausgelöst.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für: