Socket.Receive Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
- 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 - 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
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Weitere Informationen
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(Span<Byte>, SocketFlags, SocketError)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
- 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 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 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
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. 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 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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(Byte[], Int32, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
- 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
Im Folgenden werden die in buffer
gefundenen Daten empfangen und für SocketFlagsangegebenNone.
// 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 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, die Anzahl der Bytes, die Sie empfangen möchten, und die erforderliche SocketFlagsangeben.
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 (null) ist, wiederholen Sie den Empfangsvorgang.
Wenn Sie eine verbindungsorientierte Socketverwenden, liest die Receive -Methode so viele Daten, wie verfügbar sind, bis zu der Anzahl von Bytes, die size
vom 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(Span<Byte>, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
- 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 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(Byte[], Int32, Int32, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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 auf einem verbundenen Socketempfangen werden.
// 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 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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(Byte[], SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
- 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 für eine verbundene 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 .
Für diese Überladung müssen Sie nur einen Empfangspuffer und die erforderlichen SocketFlagsbereitstellen. Der Pufferoffset ist standardmäßig 0, 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 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, 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 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 queuierte 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 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(Span<Byte>)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
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, 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(IList<ArraySegment<Byte>>)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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 Pufferparameter 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.
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[])
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Gilt für:
Receive(IList<ArraySegment<Byte>>, SocketFlags)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()