Socket.ReceiveFrom Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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
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.
Socket a été fermé.
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
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
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
- 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
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.
Socket a été fermé.
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
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
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
- 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.
Socket a été fermé.
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
- 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
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
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
- Connect(EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- Available
- Shutdown(SocketShutdown)
- Close()
- SocketFlags
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
- 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.
Socket a été fermé.
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
- 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.
Socket a été fermé.
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
- 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
Une erreur s’est produite pendant la tentative d’accès au socket.
Socket a été fermé.
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 buffer
et 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.