Socket.ReceiveFrom Méthode

Définition

Reçoit un datagramme et stocke le point de terminaison source.

Surcharges

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

Reçoit le nombre spécifié d'octets dans la mémoire tampon de données, à l'aide du SocketFlags spécifié et stocke le point de terminaison.

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

Reçoit le nombre d’octets de données spécifié dans l’emplacement de la mémoire tampon spécifié à l’aide des SocketFlags et stocke le point de terminaison.

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.

ReceiveFrom(Span<Byte>, EndPoint)

Reçoit un datagramme dans la mémoire tampon de données et stocke le point de terminaison.

ReceiveFrom(Byte[], EndPoint)

Reçoit un datagramme dans la mémoire tampon de données et stocke le point de terminaison.

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Reçoit le nombre spécifié d'octets dans la mémoire tampon de données, à l'aide du SocketFlags spécifié et stocke le point de terminaison.

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

Paramètres

buffer
Byte[]

Tableau de type Byte qui est l’emplacement de stockage des données reçues.

size
Int32

Nombre d'octets à recevoir.

socketFlags
SocketFlags

Combinaison d’opérations de bits des valeurs SocketFlags.

remoteEP
EndPoint

Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception réussie.

Retours

Nombre d’octets reçus.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

size est inférieur à 0.

- ou -

size est supérieur à la longueur de buffer.

socketFlags n’est pas une combinaison valide de valeurs.

- ou -

La propriété LocalEndPoint n'a pas été définie.

- ou -

Une erreur du système d’exploitation se produit pendant l’accès au Socket.

Un appelant de la pile des appels ne dispose pas des autorisations requises.

Exemples

L’exemple de code suivant reçoit un datagramme sans connexion d’un hôte distant. Taille de la mémoire tampon et SocketFlags sont passés à la ReceiveFrom méthode .

static void ReceiveFrom3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
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

Remarques

La ReceiveFrom méthode lit les données dans le buffer paramètre, retourne le nombre d’octets correctement lus et capture le point de terminaison de l’hôte distant à partir duquel les données ont été envoyées. Cette méthode est utile si vous envisagez de recevoir des datagrammes sans connexion d’un hôte inconnu ou de plusieurs hôtes.

Cette surcharge vous oblige uniquement à fournir une mémoire tampon de réception, le nombre d’octets que vous souhaitez recevoir, le nécessaire SocketFlagset un EndPoint qui représente l’hôte distant. Par défaut, le décalage de la mémoire tampon est égal à 0.

Avec les protocoles sans connexion, ReceiveFrom lit le premier datagramme en file d’attente reçu dans la mémoire tampon du réseau local. Si le datagramme que vous recevez est supérieur à la taille de buffer, la ReceiveFrom méthode remplit buffer le plus possible le message et lève un SocketException. Si vous utilisez un protocole peu fiable, les données excédentaires seront perdues. Si vous utilisez un protocole fiable, les données excédentaires sont conservées par le fournisseur de services et vous pouvez les récupérer en appelant la ReceiveFrom méthode avec une mémoire tampon suffisamment grande.

Si aucune donnée n’est disponible pour la lecture, la ReceiveFrom méthode est bloquée jusqu’à ce que les données soient disponibles. Si vous êtes en mode non bloquant et qu’aucune donnée n’est disponible dans la mémoire tampon de la pile de protocoles, la ReceiveFrom méthode se termine immédiatement et lève un SocketException. Vous pouvez utiliser la Available propriété pour déterminer si des données sont disponibles pour la lecture. Lorsque Available n’est pas zéro, réessayez l’opération de réception.

Bien que ReceiveFrom soit destiné aux protocoles sans connexion, vous pouvez également utiliser un protocole orienté connexion. Si vous choisissez de le faire, vous devez d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une connexion hôte distante entrante en appelant la Accept méthode. Si vous n’établissez pas ou n’acceptez pas de connexion avant d’appeler la ReceiveFrom méthode, vous obtiendrez un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la ReceiveFrom méthode.

Avec les sockets orientés connexion, ReceiveFrom lit autant de données que disponible jusqu’au nombre d’octets spécifié par le size paramètre. Si l’hôte distant arrête la Socket connexion avec la Shutdown méthode et que toutes les données disponibles ont été reçues, la ReceiveFrom méthode se termine immédiatement et retourne zéro octet.

Notes

Avant d’appeler ReceiveFrom, vous devez lier explicitement le à un point de terminaison local à l’aide Socket de la Bind méthode . Si ce n’est pas le cas, ReceiveFrom lève un SocketException. Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Notes

le AddressFamily de l’utilisé EndPoint dans ReceiveFrom doit correspondre au AddressFamily de celui EndPoint utilisé dans SendTo.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.

Voir aussi

S’applique à

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Reçoit le nombre d’octets de données spécifié dans l’emplacement de la mémoire tampon spécifié à l’aide des SocketFlags et stocke le point de terminaison.

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

Paramètres

buffer
Byte[]

Tableau de type Byte qui est l’emplacement de stockage des données reçues.

offset
Int32

La position dans le paramètre buffer pour stocker les données reçues.

size
Int32

Nombre d'octets à recevoir.

socketFlags
SocketFlags

Combinaison d’opérations de bits des valeurs SocketFlags.

remoteEP
EndPoint

Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception réussie.

Retours

Nombre d’octets reçus.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

offset est inférieur à 0.

- ou -

offset est supérieur à la longueur de buffer.

- ou -

size est inférieur à 0.

- ou -

size est supérieur à la longueur de buffer moins la valeur du paramètre de décalage.

socketFlags n’est pas une combinaison valide de valeurs.

- ou -

La propriété LocalEndPoint n'a pas été définie.

- ou -

Une erreur s’est produite pendant la tentative d’accès au socket.

Exemples

L’exemple de code suivant reçoit un datagramme sans connexion d’un hôte distant. Le décalage, la taille de la mémoire tampon et SocketFlags sont passés à la ReceiveFrom méthode.

static void ReceiveFrom4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..." );
   // This call blocks.  
   s->ReceiveFrom( msg, 0, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
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

Remarques

La ReceiveFrom méthode lit les données dans le buffer paramètre, retourne le nombre d’octets correctement lus et capture le point de terminaison de l’hôte distant à partir duquel les données ont été envoyées. Cette méthode est utile si vous envisagez de recevoir des datagrammes sans connexion d’un hôte inconnu ou de plusieurs hôtes.

Avec les protocoles sans connexion, ReceiveFrom lit le premier datagramme en file d’attente reçu dans la mémoire tampon du réseau local. Si le datagramme que vous recevez est supérieur à la taille de buffer, la ReceiveFrom méthode remplit buffer le plus possible le message et lève un SocketException. Si vous utilisez un protocole peu fiable, les données excédentaires seront perdues. Si vous utilisez un protocole fiable, les données excédentaires sont conservées par le fournisseur de services et vous pouvez les récupérer en appelant la ReceiveFrom méthode avec une mémoire tampon suffisamment grande.

Si aucune donnée n’est disponible pour la lecture, la ReceiveFrom méthode est bloquée jusqu’à ce que les données soient disponibles. Si vous êtes en mode non bloquant et qu’aucune donnée n’est disponible dans la mémoire tampon de la pile de protocoles, la ReceiveFrom méthode se termine immédiatement et lève un SocketException. Vous pouvez utiliser la Available propriété pour déterminer si des données sont disponibles pour la lecture. Lorsque Available n’est pas zéro, réessayez l’opération de réception.

Bien que ReceiveFrom soit destiné aux protocoles sans connexion, vous pouvez également utiliser un protocole orienté connexion. Si vous choisissez de le faire, vous devez d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une connexion hôte distante entrante en appelant la Accept méthode. Si vous n’établissez pas ou n’acceptez pas de connexion avant d’appeler la ReceiveFrom méthode, vous obtiendrez un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la ReceiveFrom méthode.

Avec les sockets orientés connexion, ReceiveFrom lit autant de données que disponible jusqu’à la quantité d’octets spécifiée par le size paramètre. Si l’hôte distant arrête la connexion avec la SocketShutdown méthode et que toutes les données disponibles ont été reçues, la ReceiveFrom méthode se termine immédiatement et retourne zéro octet.

Notes

Avant d’appeler ReceiveFrom, vous devez lier explicitement le à un point de terminaison local à l’aide Socket de la Bind méthode . Si ce n’est pas le cas, ReceiveFrom lève un SocketException. Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Notes

le AddressFamily de l’utilisé EndPoint dans ReceiveFrom doit correspondre au AddressFamily de celui EndPoint utilisé dans SendTo.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.

Voir aussi

S’applique à

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.

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

Paramètres

buffer
Span<Byte>

Étendue d’octets qui est l’emplacement de stockage des données reçues.

socketFlags
SocketFlags

Combinaison d’opérations de bits des valeurs SocketFlags.

remoteEP
EndPoint

Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception réussie.

Retours

Nombre d’octets reçus.

Exceptions

remoteEP a la valeur null.

Une erreur s’est produite pendant la tentative d’accès au socket.

S’applique à

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.

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

Paramètres

buffer
Byte[]

Tableau de type Byte qui est l'emplacement de stockage pour les données reçues.

socketFlags
SocketFlags

Combinaison d’opérations de bits des valeurs SocketFlags.

remoteEP
EndPoint

Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception réussie.

Retours

Nombre d’octets reçus.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

Une erreur s’est produite pendant la tentative d’accès au socket.

Un appelant de la pile des appels ne dispose pas des autorisations requises.

Exemples

L’exemple de code suivant reçoit un datagramme sans connexion d’un hôte distant. SocketFlags sont passés à la ReceiveFrom méthode .

static void ReceiveFrom2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, SocketFlags::None, senderRemote );
   s->Close();
}
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

Remarques

La ReceiveFrom méthode lit les données dans le buffer paramètre, retourne le nombre d’octets correctement lus et capture le point de terminaison de l’hôte distant à partir duquel les données ont été envoyées. Cette méthode est utile si vous envisagez de recevoir des datagrammes sans connexion d’un hôte inconnu ou de plusieurs hôtes.

Cette surcharge vous oblige uniquement à fournir une mémoire tampon de réception, le nécessaire SocketFlagset un EndPoint qui représente l’hôte distant. Par défaut, le décalage est égal à 0 et la taille par défaut à la longueur du paramètre de mémoire tampon.

Notes

Avant d’appeler ReceiveFrom, vous devez lier explicitement le à un point de terminaison local à l’aide Socket de la Bind méthode . Si ce n’est pas le cas, ReceiveFrom lève un SocketException.

Avec les protocoles sans connexion, ReceiveFrom lit le premier datagramme en file d’attente reçu dans la mémoire tampon du réseau local. Si le datagramme que vous recevez est supérieur à la taille de buffer, la ReceiveFrom méthode remplit buffer le plus possible le message et lève un SocketException. Si vous utilisez un protocole peu fiable, les données excédentaires seront perdues. Si vous utilisez un protocole fiable, les données excédentaires sont conservées par le fournisseur de services et vous pouvez les récupérer en appelant la ReceiveFrom méthode avec une mémoire tampon suffisamment grande.

Si aucune donnée n’est disponible pour la lecture, la ReceiveFrom méthode est bloquée jusqu’à ce que les données soient disponibles. Si vous êtes en mode non bloquant et qu’aucune donnée n’est disponible dans la mémoire tampon de la pile de protocoles, la ReceiveFrom méthode se termine immédiatement et lève un SocketException. Vous pouvez utiliser la Available propriété pour déterminer si des données sont disponibles pour la lecture. Lorsque Available n’est pas zéro, réessayez l’opération de réception.

Bien que ReceiveFrom soit destiné aux protocoles sans connexion, vous pouvez également utiliser un protocole orienté connexion. Si vous choisissez de le faire, vous devez d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une connexion hôte distante entrante en appelant la Accept méthode. Si vous n’établissez pas ou n’acceptez pas de connexion avant d’appeler la ReceiveFrom méthode, vous obtiendrez un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la ReceiveFrom méthode.

Avec les sockets orientés connexion, ReceiveFrom lit autant de données que disponible jusqu’à la taille de buffer. Si l’hôte distant arrête la connexion avec la SocketShutdown méthode et que toutes les données disponibles ont été reçues, la ReceiveFrom méthode se termine immédiatement et retourne zéro octet.

Notes

Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Notes

le AddressFamily de l’utilisé EndPoint dans ReceiveFrom doit correspondre au AddressFamily de celui EndPoint utilisé dans SendTo.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.

Voir aussi

S’applique à

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

Source:
Socket.cs
Source:
Socket.cs

Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.

public:
 int ReceiveFrom(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ receivedAddress);
public int ReceiveFrom (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress);
member this.ReceiveFrom : Span<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function ReceiveFrom (buffer As Span(Of Byte), socketFlags As SocketFlags, receivedAddress As SocketAddress) As Integer

Paramètres

buffer
Span<Byte>

Étendue d’octets qui est l’emplacement de stockage des données reçues.

socketFlags
SocketFlags

Combinaison d’opérations de bits des valeurs SocketFlags.

receivedAddress
SocketAddress

Une SocketAddress instance qui est mise à jour avec la valeur de l’homologue distant lorsque cette méthode retourne.

Retours

Nombre d’octets reçus.

Exceptions

receivedAddress a la valeur null.

Une erreur s’est produite pendant la tentative d’accès au socket.

S’applique à

ReceiveFrom(Span<Byte>, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Reçoit un datagramme dans la mémoire tampon de données et stocke le point de terminaison.

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

Paramètres

buffer
Span<Byte>

Étendue d’octets qui est l’emplacement de stockage des données reçues.

remoteEP
EndPoint

Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception réussie.

Retours

Nombre d’octets reçus.

Exceptions

remoteEP a la valeur null.

Une erreur s’est produite pendant la tentative d’accès au socket.

S’applique à

ReceiveFrom(Byte[], EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Reçoit un datagramme dans la mémoire tampon de données et stocke le point de terminaison.

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

Paramètres

buffer
Byte[]

Tableau de type Byte qui est l’emplacement de stockage des données reçues.

remoteEP
EndPoint

Référence à un EndPoint du même type que le point de terminaison de l’hôte distant à mettre à jour lors de la réception réussie.

Retours

Nombre d’octets reçus.

Exceptions

buffer a la valeur null.

-ou-

remoteEP a la valeur null.

Une erreur s’est produite pendant la tentative d’accès au socket.

Un appelant de la pile des appels ne dispose pas des autorisations requises.

Exemples

L’exemple de code suivant reçoit un datagramme sans connexion d’un hôte distant.

static void ReceiveFrom1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   
   // This call blocks. 
   s->ReceiveFrom( msg, senderRemote );
   s->Close();
}
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

Remarques

La ReceiveFrom méthode lit les données dans le buffer paramètre, retourne le nombre d’octets correctement lus et capture le point de terminaison de l’hôte distant à partir duquel les données ont été envoyées. Cette méthode est utile si vous envisagez de recevoir des datagrammes sans connexion d’un hôte inconnu ou de plusieurs hôtes.

Cette surcharge vous oblige uniquement à fournir une réception bufferet un EndPoint qui représente l’hôte distant. Par défaut, le décalage de la mémoire tampon est égal à 0. La taille par défaut correspond à la longueur du buffer paramètre et la socketFlags valeur par défaut est None.

Notes

Avant d’appeler ReceiveFrom, vous devez lier explicitement le à un point de terminaison local à l’aide Socket de la Bind méthode . Si ce n’est pas le cas, ReceiveFrom lève un SocketException.

Avec les protocoles sans connexion, ReceiveFrom lit le premier datagramme en file d’attente reçu dans la mémoire tampon du réseau local. Si le datagramme que vous recevez est supérieur à la taille de buffer, la ReceiveFrom méthode remplit buffer avec autant de message que possible, et lève un SocketException. Si vous utilisez un protocole non fiable, les données excédentaires seront perdues. Si vous utilisez un protocole fiable, les données excédentaires sont conservées par le fournisseur de services et vous pouvez les récupérer en appelant la ReceiveFrom méthode avec une mémoire tampon suffisamment grande.

Si aucune donnée n’est disponible pour la lecture, la ReceiveFrom méthode se bloque jusqu’à ce que les données soient disponibles. Si vous êtes en mode non bloquant et qu’aucune donnée n’est disponible dans la mémoire tampon de la pile de protocoles, la ReceiveFrom méthode se termine immédiatement et lève un SocketException. Vous pouvez utiliser la Available propriété pour déterminer si des données sont disponibles pour la lecture. Quand Available est différent de zéro, réessayez l’opération de réception.

Bien que ReceiveFrom soit destiné aux protocoles sans connexion, vous pouvez également utiliser un protocole orienté connexion. Si vous choisissez de le faire, vous devez d’abord établir une connexion d’hôte distant en appelant la Connect méthode ou accepter une connexion d’hôte distant entrante en appelant la Accept méthode . Si vous n’établissez pas ou n’acceptez pas de connexion avant d’appeler la ReceiveFrom méthode , vous obtenez un SocketException. Vous pouvez également établir un hôte distant par défaut pour un protocole sans connexion avant d’appeler la ReceiveFrom méthode .

Avec les sockets orientés connexion, ReceiveFrom lit autant de données que disponible jusqu’à la taille de buffer. Si l’hôte distant arrête la Socket connexion avec la Shutdown méthode et que toutes les données disponibles ont été reçues, la ReceiveFrom méthode se termine immédiatement et retourne zéro octet.

Notes

Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Notes

Le AddressFamily du utilisé dans ReceiveFrom doit correspondre au AddressFamily de utilisé EndPoint dans SendToEndPoint .

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.

Voir aussi

S’applique à