Socket.ReceiveFrom Methode

Definitie

Hiermee ontvangt u een datagram en slaat u het broneindpunt op.

Overloads

Name Description
ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Ontvangt het opgegeven aantal bytes aan gegevens op de opgegeven locatie van de gegevensbuffer, met behulp van het opgegeven SocketFlags, en slaat het eindpunt op.

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Ontvangt het opgegeven aantal bytes in de gegevensbuffer, met behulp van de opgegeven SocketFlags, en slaat het eindpunt op.

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Ontvangt een datagram in de gegevensbuffer, met behulp van het opgegeven SocketFlags, en slaat het eindpunt op.

ReceiveFrom(Byte[], EndPoint)

Ontvangt een datagram in de gegevensbuffer en slaat het eindpunt op.

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Ontvangt het opgegeven aantal bytes aan gegevens op de opgegeven locatie van de gegevensbuffer, met behulp van het opgegeven SocketFlags, en slaat het eindpunt op.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer

Parameters

buffer
Byte[]

Een matrix van het type Byte dat de opslaglocatie is voor ontvangen gegevens.

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.

remoteEP
EndPoint

Een verwijzing naar een EndPoint van hetzelfde type als het eindpunt van de externe host die moet worden bijgewerkt bij geslaagde ontvangst.

Retouren

Het aantal bytes dat is ontvangen.

Uitzonderingen

buffer is null.

– of –

remoteEP 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 de buffer minwaarde van de offsetparameter.

socketFlags is geen geldige combinatie van waarden.

– of –

De LocalEndPoint eigenschap is niet ingesteld.

– of –

Er is een fout opgetreden bij het openen van de socket.

Voorbeelden

In het volgende codevoorbeeld wordt een gegevensgram zonder verbinding ontvangen van een externe host. De offset, buffergrootte en SocketFlags worden doorgegeven aan de ReceiveFrom methode.

public static void ReceiveFrom4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub

Opmerkingen

De ReceiveFrom methode leest gegevens in de buffer parameter, retourneert het aantal bytes dat is gelezen en legt het eindpunt van de externe host vast waaruit de gegevens zijn verzonden. Deze methode is handig als u verbindingloze datagrammen van een onbekende host of meerdere hosts wilt ontvangen.

Met verbindingsloze protocollen ReceiveFrom wordt het eerste enqueued datagram gelezen dat in de lokale netwerkbuffer is ontvangen. Als het datagram dat u ontvangt groter is dan de grootte, bufferzal de ReceiveFrom methode zoveel mogelijk van het bericht vullen buffer en een SocketException. Als u een onbetrouwbaar protocol gebruikt, gaan de overtollige gegevens verloren. Als u een betrouwbaar protocol gebruikt, worden de overtollige gegevens bewaard door de serviceprovider en kunt u deze ophalen door de ReceiveFrom methode aan te roepen met een grote buffer.

Als er geen gegevens beschikbaar zijn om te lezen, wordt de ReceiveFrom 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 ReceiveFrom 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.

Hoewel ReceiveFrom het bedoeld is voor verbindingsloze protocollen, kunt u ook een verbindingsgeoriënteerd protocol gebruiken. Als u hiervoor kiest, moet u eerst een externe hostverbinding tot stand brengen door de Connect methode aan te roepen of een binnenkomende externe hostverbinding te accepteren door de methode aan te Accept roepen. Als u geen verbinding tot stand brengt of accepteert voordat u de ReceiveFrom methode aanroept, krijgt u een SocketException. U kunt ook een standaard externe host instellen voor een verbindingsloos protocol voordat u de ReceiveFrom methode aanroept.

Met verbindingsgeoriënteerde sockets ReceiveFrom worden zoveel gegevens gelezen als beschikbaar is tot de hoeveelheid bytes die door de size parameter is opgegeven. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de ReceiveFrom methode onmiddellijk voltooid en worden nul bytes geretourneerd.

Note

Voordat u aanroept ReceiveFrom, moet u het Socket expliciet verbinden met een lokaal eindpunt met behulp van de Bind methode. Als je dat niet doet, ReceiveFrom gooi dan een SocketException. 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

De gebruikte waarde moet overeenkomen met de AddressFamilyEndPoint gebruikte waarde in SendTo.ReceiveFromEndPointAddressFamily

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Zie ook

Van toepassing op

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Ontvangt het opgegeven aantal bytes in de gegevensbuffer, met behulp van de opgegeven SocketFlags, en slaat het eindpunt op.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer

Parameters

buffer
Byte[]

Een matrix van het type Byte dat de opslaglocatie is voor ontvangen gegevens.

size
Int32

Het aantal te ontvangen bytes.

socketFlags
SocketFlags

Een bitsgewijze combinatie van de SocketFlags waarden.

remoteEP
EndPoint

Een verwijzing naar een EndPoint van hetzelfde type als het eindpunt van de externe host die moet worden bijgewerkt bij geslaagde ontvangst.

Retouren

Het aantal bytes dat is ontvangen.

Uitzonderingen

buffer is null.

– of –

remoteEP is null.

size is kleiner dan 0.

– of –

size is groter dan de lengte van buffer.

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.

Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.

Voorbeelden

In het volgende codevoorbeeld wordt een gegevensgram zonder verbinding ontvangen van een externe host. De buffergrootte en SocketFlags worden doorgegeven aan de ReceiveFrom methode.

public static void ReceiveFrom3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub

Opmerkingen

De ReceiveFrom methode leest gegevens in de buffer parameter, retourneert het aantal bytes dat is gelezen en legt het eindpunt van de externe host vast waaruit de gegevens zijn verzonden. Deze methode is handig als u verbindingloze datagrammen van een onbekende host of meerdere hosts wilt ontvangen.

Deze overbelasting vereist alleen dat u een ontvangstbuffer opgeeft, het aantal bytes dat u wilt ontvangen, de benodigde SocketFlagsen een EndPoint die de externe host vertegenwoordigt. De bufferverschil is standaard ingesteld op 0.

Met verbindingsloze protocollen ReceiveFrom wordt het eerste enqueued datagram gelezen dat in de lokale netwerkbuffer is ontvangen. Als het datagram dat u ontvangt groter is dan de grootte, bufferzal de ReceiveFrom methode zoveel mogelijk van het bericht vullen buffer en een SocketException. Als u een onbetrouwbaar protocol gebruikt, gaan de overtollige gegevens verloren. Als u een betrouwbaar protocol gebruikt, worden de overtollige gegevens bewaard door de serviceprovider en kunt u deze ophalen door de ReceiveFrom methode aan te roepen met een grote buffer.

Als er geen gegevens beschikbaar zijn om te lezen, wordt de ReceiveFrom 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 ReceiveFrom 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.

Hoewel ReceiveFrom het bedoeld is voor verbindingsloze protocollen, kunt u ook een verbindingsgeoriënteerd protocol gebruiken. Als u hiervoor kiest, moet u eerst een externe hostverbinding tot stand brengen door de Connect methode aan te roepen of een binnenkomende externe hostverbinding te accepteren door de methode aan te Accept roepen. Als u geen verbinding tot stand brengt of accepteert voordat u de ReceiveFrom methode aanroept, krijgt u een SocketException. U kunt ook een standaard externe host instellen voor een verbindingsloos protocol voordat u de ReceiveFrom methode aanroept.

Met verbindingsgeoriënteerde sockets ReceiveFrom worden zoveel gegevens gelezen 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 ReceiveFrom methode onmiddellijk voltooid en worden nul bytes geretourneerd.

Note

Voordat u aanroept ReceiveFrom, moet u het Socket expliciet verbinden met een lokaal eindpunt met behulp van de Bind methode. Als je dat niet doet, ReceiveFrom gooi dan een SocketException. 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

De gebruikte waarde moet overeenkomen met de AddressFamilyEndPoint gebruikte waarde in SendTo.ReceiveFromEndPointAddressFamily

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Zie ook

Van toepassing op

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Ontvangt een datagram in de gegevensbuffer, met behulp van het opgegeven SocketFlags, en slaat het eindpunt op.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * System.Net.Sockets.SocketFlags * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), socketFlags As SocketFlags, ByRef remoteEP As EndPoint) As Integer

Parameters

buffer
Byte[]

Een matrix van het type Byte dat de opslaglocatie is voor de ontvangen gegevens.

socketFlags
SocketFlags

Een bitsgewijze combinatie van de SocketFlags waarden.

remoteEP
EndPoint

Een verwijzing naar een EndPoint van hetzelfde type als het eindpunt van de externe host die moet worden bijgewerkt bij geslaagde ontvangst.

Retouren

Het aantal bytes dat is ontvangen.

Uitzonderingen

buffer is null.

– of –

remoteEP is null.

Er is een fout opgetreden bij het openen van de socket.

Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.

Voorbeelden

In het volgende codevoorbeeld wordt een gegevensgram zonder verbinding ontvangen van een externe host. SocketFlags worden doorgegeven aan de ReceiveFrom methode.

public static void ReceiveFrom2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.
    s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
    s.Close()

End Sub

Opmerkingen

De ReceiveFrom methode leest gegevens in de buffer parameter, retourneert het aantal bytes dat is gelezen en legt het eindpunt van de externe host vast waaruit de gegevens zijn verzonden. Deze methode is handig als u verbindingloze datagrammen van een onbekende host of meerdere hosts wilt ontvangen.

Deze overbelasting vereist alleen dat u een ontvangstbuffer, de benodigde SocketFlagsen een EndPoint die de externe host vertegenwoordigt. De offset wordt standaard ingesteld op 0 en de grootte wordt standaard ingesteld op de lengte van de bufferparameter.

Note

Voordat u aanroept ReceiveFrom, moet u het Socket expliciet verbinden met een lokaal eindpunt met behulp van de Bind methode. Als je dat niet doet, ReceiveFrom gooi dan een SocketException.

Met verbindingsloze protocollen ReceiveFrom wordt het eerste enqueued datagram gelezen dat in de lokale netwerkbuffer is ontvangen. Als het datagram dat u ontvangt groter is dan de grootte, bufferzal de ReceiveFrom methode zoveel mogelijk van het bericht vullen buffer en een SocketException. Als u een onbetrouwbaar protocol gebruikt, gaan de overtollige gegevens verloren. Als u een betrouwbaar protocol gebruikt, worden de overtollige gegevens bewaard door de serviceprovider en kunt u deze ophalen door de ReceiveFrom methode aan te roepen met een grote buffer.

Als er geen gegevens beschikbaar zijn om te lezen, wordt de ReceiveFrom 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 ReceiveFrom 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.

Hoewel ReceiveFrom het bedoeld is voor verbindingsloze protocollen, kunt u ook een verbindingsgeoriënteerd protocol gebruiken. Als u hiervoor kiest, moet u eerst een externe hostverbinding tot stand brengen door de Connect methode aan te roepen of een binnenkomende externe hostverbinding te accepteren door de methode aan te Accept roepen. Als u geen verbinding tot stand brengt of accepteert voordat u de ReceiveFrom methode aanroept, krijgt u een SocketException. U kunt ook een standaard externe host instellen voor een verbindingsloos protocol voordat u de ReceiveFrom methode aanroept.

Met verbindingsgeoriënteerde sockets ReceiveFrom worden zoveel gegevens gelezen als beschikbaar is tot de grootte van buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de ReceiveFrom methode onmiddellijk voltooid en worden nul bytes geretourneerd.

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

De gebruikte waarde moet overeenkomen met de AddressFamilyEndPoint gebruikte waarde in SendTo.ReceiveFromEndPointAddressFamily

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Zie ook

Van toepassing op

ReceiveFrom(Byte[], EndPoint)

Ontvangt een datagram in de gegevensbuffer en slaat het eindpunt op.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom(byte[] buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * EndPoint -> int
Public Function ReceiveFrom (buffer As Byte(), ByRef remoteEP As EndPoint) As Integer

Parameters

buffer
Byte[]

Een matrix van het type Byte dat de opslaglocatie is voor ontvangen gegevens.

remoteEP
EndPoint

Een verwijzing naar een EndPoint van hetzelfde type als het eindpunt van de externe host die moet worden bijgewerkt bij geslaagde ontvangst.

Retouren

Het aantal bytes dat is ontvangen.

Uitzonderingen

buffer is null.

– of –

remoteEP is null.

Er is een fout opgetreden bij het openen van de socket.

Een aanroeper in de aanroepstack beschikt niet over de vereiste machtigingen.

Voorbeelden

In het volgende codevoorbeeld wordt een gegevensgram zonder verbinding ontvangen van een externe host.

public static void ReceiveFrom1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");

    // This call blocks.
    s.ReceiveFrom(msg, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    
    ' This call blocks. 
    s.ReceiveFrom(msg, senderRemote)
    s.Close()

End Sub

Opmerkingen

De ReceiveFrom methode leest gegevens in de buffer parameter, retourneert het aantal bytes dat is gelezen en legt het eindpunt van de externe host vast waaruit de gegevens zijn verzonden. Deze methode is handig als u verbindingloze datagrammen van een onbekende host of meerdere hosts wilt ontvangen.

Deze overbelasting vereist alleen dat u een ontvangst bufferen een EndPoint die de externe host vertegenwoordigt. De bufferverschil is standaard ingesteld op 0. De grootte wordt standaard ingesteld op de lengte van de buffer parameter en de socketFlags standaardwaarde None.

Note

Voordat u aanroept ReceiveFrom, moet u het Socket expliciet verbinden met een lokaal eindpunt met behulp van de Bind methode. Als je dat niet doet, ReceiveFrom gooi dan een SocketException.

Met verbindingsloze protocollen ReceiveFrom wordt het eerste enqueued datagram gelezen dat in de lokale netwerkbuffer is ontvangen. Als het datagram dat u ontvangt groter is dan de grootte, bufferzal de ReceiveFrom methode zoveel mogelijk van het bericht vullen buffer en een SocketException. Als u een onbetrouwbaar protocol gebruikt, gaan de overtollige gegevens verloren. Als u een betrouwbaar protocol gebruikt, worden de overtollige gegevens bewaard door de serviceprovider en kunt u deze ophalen door de ReceiveFrom methode aan te roepen met een grote buffer.

Als er geen gegevens beschikbaar zijn om te lezen, wordt de ReceiveFrom 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 ReceiveFrom 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.

Hoewel ReceiveFrom het bedoeld is voor verbindingsloze protocollen, kunt u ook een verbindingsgeoriënteerd protocol gebruiken. Als u hiervoor kiest, moet u eerst een externe hostverbinding tot stand brengen door de Connect methode aan te roepen of een binnenkomende externe hostverbinding te accepteren door de methode aan te Accept roepen. Als u geen verbinding tot stand brengt of accepteert voordat u de ReceiveFrom methode aanroept, krijgt u een SocketException. U kunt ook een standaard externe host instellen voor een verbindingsloos protocol voordat u de ReceiveFrom methode aanroept.

Met verbindingsgeoriënteerde sockets ReceiveFrom worden zoveel gegevens gelezen als beschikbaar is tot de grootte van buffer. Als de externe host de Socket verbinding met de Shutdown methode afsluit en alle beschikbare gegevens zijn ontvangen, wordt de ReceiveFrom methode onmiddellijk voltooid en worden nul bytes geretourneerd.

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

De gebruikte waarde moet overeenkomen met de AddressFamilyEndPoint gebruikte waarde in SendTo.ReceiveFromEndPointAddressFamily

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Zie ook

Van toepassing op