Socket.Receive Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Ontvangt gegevens van een afhankelijke Socket.
Overloads
| Name | Description |
|---|---|
| Receive(Byte[], Int32, Int32, SocketFlags, SocketError) |
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven SocketFlags. |
| Receive(Byte[], Int32, Int32, SocketFlags) |
Hiermee ontvangt u het opgegeven aantal bytes van een afhankelijke Socket waarde in de opgegeven offsetpositie van de ontvangstbuffer, met behulp van de opgegeven SocketFlags. |
| Receive(Span<Byte>, SocketFlags, SocketError) |
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven SocketFlags. |
| Receive(Byte[], Int32, SocketFlags) |
Hiermee ontvangt u het opgegeven aantal bytes aan gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven SocketFlags. |
| Receive(Span<Byte>, SocketFlags) |
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven SocketFlags. |
| Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError) |
Ontvangt gegevens van een afhankelijke Socket in de lijst met ontvangstbuffers, met behulp van de opgegeven SocketFlags. |
| Receive(Byte[], SocketFlags) |
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven SocketFlags. |
| Receive(Span<Byte>) |
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer. |
| Receive(IList<ArraySegment<Byte>>) |
Ontvangt gegevens van een afhankelijke Socket in de lijst met ontvangstbuffers. |
| Receive(Byte[]) |
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer. |
| Receive(IList<ArraySegment<Byte>>, SocketFlags) |
Ontvangt gegevens van een afhankelijke Socket in de lijst met ontvangstbuffers, met behulp van de opgegeven SocketFlags. |
Receive(Byte[], Int32, Int32, SocketFlags, SocketError)
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven 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
Parameters
- offset
- Int32
De positie in de buffer parameter voor het opslaan van de ontvangen gegevens.
- size
- Int32
Het aantal te ontvangen bytes.
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
- errorCode
- SocketError
Een SocketError object waarin de socketfout wordt opgeslagen.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
buffer is null.
offset is kleiner dan 0.
– of –
offset is groter dan de lengte van buffer.
– of –
size is kleiner dan 0.
– of –
size is groter dan de lengte van buffer min de waarde van de offset parameter.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. Er is een fout opgetreden bij het openen van de socket. Zie opmerkingen hieronder. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot het aantal bytes dat is opgegeven door de grootteparameter. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive wordt het eerste datagram in de wachtrij gelezen van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(Byte[], Int32, Int32, SocketFlags)
Hiermee ontvangt u het opgegeven aantal bytes van een afhankelijke Socket waarde in de opgegeven offsetpositie van de ontvangstbuffer, met behulp van de opgegeven 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
Parameters
- offset
- Int32
De locatie waarin buffer de ontvangen gegevens worden opgeslagen.
- size
- Int32
Het aantal te ontvangen bytes.
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
buffer is null.
offset is kleiner dan 0.
– of –
offset is groter dan de lengte van buffer.
– of –
size is kleiner dan 0.
– of –
size is groter dan de lengte van buffer min de waarde van de offset parameter.
socketFlags is geen geldige combinatie van waarden.
– of –
De LocalEndPoint eigenschap is niet ingesteld.
– of –
Er treedt een fout op in het besturingssysteem tijdens het openen van de Socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Voorbeelden
In het volgende codevoorbeeld wordt een gegevensbuffer, een offset, een grootte en een socketvlag opgegeven voordat gegevens worden ontvangen op een verbonden Socket.
// 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
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. Er is een fout opgetreden bij het openen van de socket. Zie opmerkingen hieronder. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot het aantal bytes dat is opgegeven door de grootteparameter. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive wordt het eerste datagram in de wachtrij gelezen van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(Span<Byte>, SocketFlags, SocketError)
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven 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
Parameters
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de opsommingswaarden waarmee gedrag voor verzenden en ontvangen wordt opgegeven.
- errorCode
- SocketError
Wanneer deze methode retourneert, bevat deze een van de opsommingswaarden waarmee foutcodes voor de socket worden gedefinieerd.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Deze overbelasting vereist alleen dat u een ontvangstbuffer opgeeft. De bufferverschil is standaard ingesteld op 0, de grootte wordt standaard ingesteld op de lengte van de bufferparameter en de SocketFlags standaardwaarde None.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Wanneer de time-outwaarde wordt overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive leest u het eerste datagram in de wachtrij van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(Byte[], Int32, SocketFlags)
Hiermee ontvangt u het opgegeven aantal bytes aan gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven 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
Parameters
- size
- Int32
Het aantal te ontvangen bytes.
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
buffer is null.
size overschrijdt de grootte van buffer.
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Voorbeelden
Het volgende ontvangt de gegevens die zijn gevonden in buffer, en geeft op None voor SocketFlags.
// 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
Opmerkingen
De Receive methode leest gegevens in de buffer parameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Voor deze overbelasting hoeft u alleen een ontvangstbuffer op te geven, het aantal bytes dat u wilt ontvangen en het benodigde SocketFlagsaantal.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot het aantal bytes dat is opgegeven door de size parameter. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive wordt het eerste datagram in de wachtrij gelezen van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(Span<Byte>, SocketFlags)
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven 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
Parameters
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de opsommingswaarden waarmee gedrag voor verzenden en ontvangen wordt opgegeven.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Deze overbelasting vereist alleen dat u een ontvangstbuffer opgeeft. De bufferverschil is standaard ingesteld op 0, de grootte wordt standaard ingesteld op de lengte van de bufferparameter en de SocketFlags standaardwaarde None.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Wanneer de time-outwaarde wordt overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive leest u het eerste datagram in de wachtrij van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
Ontvangt gegevens van een afhankelijke Socket in de lijst met ontvangstbuffers, met behulp van de opgegeven 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
Parameters
- buffers
- IList<ArraySegment<Byte>>
Een lijst met ArraySegment<T>s van het type Byte dat de ontvangen gegevens bevat.
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
- errorCode
- SocketError
Een SocketError object waarin de socketfout wordt opgeslagen.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Opmerkingen
Met deze methode worden gegevens in de buffers parameter gelezen en wordt het aantal bytes geretourneerd dat is gelezen. U kunt bellen vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Voor deze overbelasting moet u een of meer ontvangstbuffers opgeven. De SocketFlags waarde wordt standaard ingesteld op None.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe hostverbinding die in de Connect of Accept methode tot stand is gebracht. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt,Receive wordt het eerste datagram in de wachtrij gelezen van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffers parameter, buffers wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(Byte[], SocketFlags)
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer, met behulp van de opgegeven 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
Parameters
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
buffer is null.
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Voorbeelden
In het volgende codevoorbeeld wordt een gegevensbuffer opgegeven en SocketFlags voor het ontvangen van gegevens op een verbonden Socket.
// 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
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Deze overbelasting vereist alleen dat u een ontvangstbuffer en de benodigde SocketFlags. De bufferverschil is standaard ingesteld op 0 en de grootte wordt standaard ingesteld op de lengte van de byteparameter.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgericht Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive leest u het eerste enqueued datagram uit het doeladres dat u opgeeft in de Connect methode. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(Span<Byte>)
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer.
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
Parameters
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Deze overbelasting vereist alleen dat u een ontvangstbuffer opgeeft. De bufferverschil is standaard ingesteld op 0, de grootte wordt standaard ingesteld op de lengte van de bufferparameter en de SocketFlags standaardwaarde None.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Wanneer de time-outwaarde wordt overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive leest u het eerste datagram in de wachtrij van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(IList<ArraySegment<Byte>>)
Ontvangt gegevens van een afhankelijke Socket in de lijst met ontvangstbuffers.
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
Parameters
- buffers
- IList<ArraySegment<Byte>>
Een lijst met ArraySegment<T>s van het type Byte dat de ontvangen gegevens bevat.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
De buffers parameter is null.
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Opmerkingen
Met deze methode worden gegevens in de bufferparameter gelezen en wordt het aantal bytes geretourneerd dat is gelezen. U kunt bellen vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Voor deze overbelasting moet u een of meer ontvangstbuffers opgeven.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe hostverbinding die in de Connect of Accept methode tot stand is gebracht. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive leest u het eerste enqueued datagram uit het doeladres dat u opgeeft in de Connect methode. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffers parameter, buffers wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Opmerking Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Van toepassing op
Receive(Byte[])
Ontvangt gegevens van een afhankelijke Socket in een ontvangstbuffer.
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
Parameters
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
buffer is null.
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.
Voorbeelden
In het volgende codevoorbeeld worden gegevens ontvangen van een verbonden Socket.
// 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
Opmerkingen
De Receive methode leest gegevens in de bufferparameter en retourneert het aantal bytes dat is gelezen. U kunt bellen Receive vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Deze overbelasting vereist alleen dat u een ontvangstbuffer opgeeft. De bufferverschil is standaard ingesteld op 0, de grootte wordt standaard ingesteld op de lengte van de bufferparameter en de SocketFlags standaardwaarde None.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe host die in de Connect of Accept methode is ingesteld. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive wordt het eerste datagram in de wachtrij gelezen van het doeladres dat u in de Connect methode opgeeft. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffer parameter, buffer wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Van toepassing op
Receive(IList<ArraySegment<Byte>>, SocketFlags)
Ontvangt gegevens van een afhankelijke Socket in de lijst met ontvangstbuffers, met behulp van de opgegeven 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
Parameters
- buffers
- IList<ArraySegment<Byte>>
Een lijst met ArraySegment<T>s van het type Byte dat de ontvangen gegevens bevat.
- socketFlags
- SocketFlags
Een bitsgewijze combinatie van de SocketFlags waarden.
Retouren
Het totale aantal ontvangen bytes. De methode retourneert alleen nul (0) als er nul bytes zijn aangevraagd of als er geen bytes meer beschikbaar zijn omdat de peersocket een probleemloos afsluiten heeft uitgevoerd.
Uitzonderingen
Er is een fout opgetreden bij het openen van de socket.
De Socket is gesloten.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u gegevens over een verbonden verbinding Socketontvangt.
// 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));
Opmerkingen
Met deze methode worden gegevens in de buffers parameter gelezen en wordt het aantal bytes geretourneerd dat is gelezen. U kunt bellen vanuit zowel verbindingsgeoriënteerde als verbindingsloze sockets.
Voor deze overbelasting moet u een of meer ontvangstbuffers opgeven. De SocketFlags waarde wordt standaard ingesteld op None.
Als u een verbindingsgeoriënteerd protocol gebruikt, moet u aanroepen Connect om een externe hostverbinding tot stand te brengen of Accept om een binnenkomende verbinding te accepteren voordat u aanroept Receive. De Receive methode leest alleen gegevens die afkomstig zijn van de externe hostverbinding die in de Connect of Accept methode tot stand is gebracht. Als u een verbindingsloos protocol gebruikt, kunt u ook de ReceiveFrom methode gebruiken. ReceiveFrom hiermee kunt u gegevens ontvangen die afkomstig zijn van elke host.
Als er geen gegevens beschikbaar zijn om te lezen, wordt de Receive methode geblokkeerd totdat gegevens beschikbaar zijn, tenzij er een time-outwaarde is ingesteld met behulp van Socket.ReceiveTimeout. Als de time-outwaarde is overschreden, genereert de Receive aanroep een SocketException. Als u zich in de niet-blokkerende modus bevindt en er geen gegevens beschikbaar zijn in de protocolstackbuffer, wordt de Receive methode onmiddellijk voltooid en wordt er een SocketException. U kunt de Available eigenschap gebruiken om te bepalen of er gegevens beschikbaar zijn om te lezen. Als Available dit niet nul is, voert u de ontvangstbewerking opnieuw uit.
Als u een verbindingsgeoriënteerd Socketgebruikt, leest de Receive methode zoveel gegevens als beschikbaar is, tot de grootte van de buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de Receive methode onmiddellijk voltooid en worden nul bytes geretourneerd.
Als u een verbindingloos Socketgebruikt, Receive leest u het eerste enqueued datagram uit het doeladres dat u opgeeft in de Connect methode. Als het gegevensgram dat u ontvangt groter is dan de grootte van de buffers parameter, buffers wordt gevuld met het eerste deel van het bericht, gaan de overtollige gegevens verloren en wordt er een SocketException gegenereerd.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Zie ook
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()