Freigeben über


Socket.Receive Methode

Definition

Empfängt Daten aus einer gebundenen Socket.

Überlädt

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

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen SocketFlags.

Receive(Span<Byte>, SocketFlags, SocketError)

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen SocketFlags.

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

Empfängt Daten aus einer gebundenen Socket Liste der Empfangspuffer mithilfe der angegebenen SocketFlags.

Receive(Byte[], Int32, SocketFlags)

Empfängt die angegebene Anzahl von Byte von Daten, die an einen Empfangspuffer gebunden Socket sind, mithilfe des angegebenen SocketFlags.

Receive(Span<Byte>, SocketFlags)

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen SocketFlags.

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

Empfängt die angegebene Anzahl von Bytes aus einer Gebundenen Socket an die angegebene Offsetposition des Empfangspuffers unter Verwendung der angegebenen SocketFlags.

Receive(Byte[], SocketFlags)

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen SocketFlags.

Receive(Span<Byte>)

Empfängt Daten aus einer Gebundenen Socket in einen Empfangspuffer.

Receive(IList<ArraySegment<Byte>>)

Empfängt Daten aus einer gebundenen Socket Liste der Empfangspuffer.

Receive(Byte[])

Empfängt Daten aus einer Gebundenen Socket in einen Empfangspuffer.

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

Empfängt Daten aus einer gebundenen Socket Liste der Empfangspuffer mithilfe der angegebenen SocketFlags.

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

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen 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

Parameter

buffer
Byte[]

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

offset
Int32

Die Position im buffer Parameter zum Speichern der empfangenen Daten.

size
Int32

Die Anzahl der zu empfangenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte.

errorCode
SocketError

Ein SocketError Objekt, das den Socketfehler speichert.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

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 minus buffer des Werts des offset Parameters.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

Die Receive Methode liest Daten in den Pufferparameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück. 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 eine eingehende Verbindung vor dem Aufruf Receiveannehmen. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten. Weitere Informationen finden Sie weiter unten in den Anmerkungen. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive Methode so viele Daten wie verfügbar, bis zur Anzahl der Byte, die durch den Größenparameter angegeben werden. Wenn der Remotehost die Socket Verbindung mit der Shutdown Methode herunterfahren und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses SocketDatendiagramm verwenden, Receive wird das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

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

Weitere Informationen

Gilt für:

Receive(Span<Byte>, SocketFlags, SocketError)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen 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

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 Sende- und Empfangsverhalten angibt.

errorCode
SocketError

Wenn diese Methode zurückgegeben wird, enthält sie einen der Enumerationswerte, die Fehlercodes für den Socket definieren.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

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

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer bereitstellen. Der Pufferversatz ist standardmäßig auf 0 festgelegt, 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 vor dem Aufruf Receivezu akzeptieren. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wird, löst der Receive Aufruf einen SocketException. Wenn Sie sich im Nicht-Blockierungsmodus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive Methode sofort abgeschlossen und löst eine SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie eine Verbindung ohne SocketVerbindung verwenden, 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 wird mit dem ersten Teil der Nachricht gefüllt, gehen die überschüssigen Daten verloren und ein SocketException Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für:

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

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Socket Liste der Empfangspuffer mithilfe der angegebenen 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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste der ArraySegment<T>Typen Byte , die die empfangenen Daten enthalten.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte.

errorCode
SocketError

Ein SocketError Objekt, das den Socketfehler speichert.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

buffers ist null.

- oder -

buffers. Die Anzahl ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Das Socket wurde geschlossen.

Hinweise

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

Diese Überladung erfordert, dass Sie einen oder mehrere Empfangspuffer bereitstellen. Der SocketFlags Standardwert ist None.

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

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie ein verbindungsloses SocketDatendiagramm verwenden,Receive wird das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für:

Receive(Byte[], Int32, SocketFlags)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt die angegebene Anzahl von Byte von Daten, die an einen Empfangspuffer gebunden Socket sind, mithilfe des angegebenen 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

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 Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

buffer ist null.

size überschreitet die Größe von buffer.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Im Folgenden werden die in den Daten gefundenen Daten empfangen bufferund für NoneSocketFlags.


// 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 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 angeben SocketFlags.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder aufrufen Connect , um eine Remotehostverbindung herzustellen, oder Accept eine eingehende Verbindung vor dem Aufruf Receiveannehmen. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available keine Null ist, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie ein verbindungsloses SocketDatendiagramm verwenden, Receive wird das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für:

Receive(Span<Byte>, SocketFlags)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen 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

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 Sende- und Empfangsverhalten angibt.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

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

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer bereitstellen. Der Pufferversatz ist standardmäßig auf 0 festgelegt, 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 vor dem Aufruf Receivezu akzeptieren. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wird, löst der Receive Aufruf einen 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie eine Verbindung ohne SocketVerbindung verwenden, 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 wird mit dem ersten Teil der Nachricht gefüllt, die überschüssigen Daten gehen verloren, und ein SocketException Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

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

Weitere Informationen

Gilt für:

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

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt die angegebene Anzahl von Bytes aus einer Gebundenen Socket an die angegebene Offsetposition des Empfangspuffers unter Verwendung der angegebenen 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

Parameter

buffer
Byte[]

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

offset
Int32

Der Speicherort buffer zum Speichern der empfangenen Daten.

size
Int32

Die Anzahl der zu empfangenden Bytes.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

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 minus buffer des Werts des offset Parameters.

socketFlags ist keine gültige Kombination von Werten.

- oder -

Die LocalEndPoint Eigenschaft wurde nicht festgelegt.

- oder -

Beim Zugriff auf das SocketBetriebssystem tritt ein Fehler auf.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Im folgenden Codebeispiel wird ein Datenpuffer, ein Offset, eine Größe und ein Socketkennzeichnung angegeben, bevor Daten in einer verbundenen Datei Socketempfangen werden.

// 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 erfolgreich gelesenen Bytes zurück. 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 eine eingehende Verbindung vor dem Aufruf Receiveannehmen. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten. Weitere Informationen finden Sie weiter unten in den Anmerkungen. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

Wenn Sie eine verbindungsorientierte SocketMethode verwenden, liest die Receive Methode so viele Daten wie verfügbar, bis zur Anzahl der Byte, die durch den Größenparameter angegeben werden. Wenn der Remotehost die Socket Verbindung mit der Shutdown Methode herunterfahren und alle verfügbaren Daten empfangen wurden, wird die Receive Methode sofort abgeschlossen und gibt null Bytes zurück.

Wenn Sie ein verbindungsloses SocketDatendiagramm verwenden, Receive wird das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für:

Receive(Byte[], SocketFlags)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Bindung Socket in einen Empfangspuffer mithilfe des angegebenen 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

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 Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

buffer ist null.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

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

// 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 erfolgreich gelesenen Bytes zurück. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer und den erforderlichen Puffer SocketFlagsbereitstellen. Der Pufferversatz ist standardmäßig auf 0 festgelegt, und die Größe wird 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 eine eingehende Verbindung vor dem Aufruf Receiveannehmen. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available keine Null ist, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie eine verbindungslose SocketMethode verwenden, Receive wird das erste enqueuierte Datagram aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für:

Receive(Span<Byte>)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer Gebundenen Socket in einen 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 Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Hinweise

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

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer bereitstellen. Der Pufferversatz ist standardmäßig auf 0 festgelegt, 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 eine eingehende Verbindung vor dem Aufrufen Receivezu akzeptieren. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wird, löst der Receive Aufruf einen SocketException. Wenn Sie sich im Nicht-Blockierungsmodus befinden und keine Daten im Protokollstapelpuffer verfügbar sind, wird die Receive Methode sofort abgeschlossen und löst eine SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie eine Verbindung ohne SocketVerbindung verwenden, 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 wird mit dem ersten Teil der Nachricht gefüllt, die überschüssigen Daten gehen verloren, und ein SocketException Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

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

Weitere Informationen

Gilt für:

Receive(IList<ArraySegment<Byte>>)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Socket Liste der Empfangspuffer.

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 der ArraySegment<T>Typen Byte , die die empfangenen Daten enthalten.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

Der buffers Parameter ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Das Socket wurde geschlossen.

Hinweise

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

Diese Überladung erfordert, dass Sie einen oder mehrere Empfangspuffer bereitstellen.

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

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie eine verbindungslose SocketMethode verwenden, Receive wird das erste enqueuierte Datagram aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

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

Gilt für:

Receive(Byte[])

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer Gebundenen Socket in einen 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 Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

buffer ist null.

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Ein Aufrufer im Aufrufstapel verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Im folgenden Codebeispiel werden Daten zu einer verbundenen Datei Socketempfangen.

// 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 erfolgreich gelesenen Bytes zurück. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen Receive .

Diese Überladung erfordert nur, dass Sie einen Empfangspuffer bereitstellen. Der Pufferversatz ist standardmäßig auf 0 festgelegt, 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 eine eingehende Verbindung vor dem Aufruf Receiveannehmen. Die Receive Methode liest nur Daten, die vom Remotehost empfangen werden, der in der Connect oder Accept der Methode eingerichtet wurde. Wenn Sie ein verbindungsloses Protokoll verwenden, können Sie auch die ReceiveFrom Methode verwenden. ReceiveFrom ermöglicht es Ihnen, Von jedem Host eingehende Daten zu empfangen.

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie ein verbindungsloses SocketDatendiagramm verwenden, Receive wird das erste in die Warteschlange eingereihte Datagramm aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für:

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

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Empfängt Daten aus einer gebundenen Socket Liste der Empfangspuffer mithilfe der angegebenen 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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste der ArraySegment<T>Typen Byte , die die empfangenen Daten enthalten.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte.

Gibt zurück

Die Gesamtanzahl der empfangenen Bytes. Die Methode gibt null (0) nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Bytes verfügbar sind, da der Peersocket ein ordnungsgemäßes Herunterfahren ausgeführt hat.

Ausnahmen

buffers ist null.

- oder -

buffers. Die Anzahl ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Das Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Daten in einer verbundenen Datei Socketempfangen werden.


// 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 Bytes zurück, die erfolgreich gelesen wurden. Sie können sowohl verbindungsorientierte als auch verbindungslose Sockets aufrufen.

Diese Überladung erfordert, dass Sie einen oder mehrere Empfangspuffer bereitstellen. Der SocketFlags Standardwert ist None.

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

Wenn keine Daten zum Lesen verfügbar sind, wird die Receive Methode blockiert, bis Daten verfügbar sind, es sei denn, ein Timeoutwert wurde mit der Verwendung Socket.ReceiveTimeoutfestgelegt. Wenn der Timeoutwert überschritten wurde, löst der Receive Aufruf einen 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 SocketException. Mit der Available Eigenschaft können Sie ermitteln, ob Daten zum Lesen verfügbar sind. Wenn Available es sich nicht um Null handelt, versuchen Sie den Empfangsvorgang erneut.

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

Wenn Sie eine verbindungslose SocketMethode verwenden, Receive wird das erste enqueuierte Datagram aus der Zieladresse gelesen, 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 Fehler wird ausgelöst.

Hinweis

Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Hinweis

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

Weitere Informationen

Gilt für: