nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Les objets de cette classe représentent les points de terminaison de transport TCP.
Résumé
La couche d'encapsulation Nest encapsule les méthodes d'interaction avec les points de terminaison de transport TCP (sockets SoCK_STREAM sur les systèmes Linux et dérivés de BSD) ou avec les blocs de contrôle du protocole TCP LwIP, car le système est configuré en conséquence.
Héritage
Hérite de: nl::Inet::EndPointBasis
Types publics |
|
---|---|
@10{
|
énum État dynamique de base du point de terminaison sous-jacent. |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Type de fonction de gestion des événements d'acceptation des erreurs d'acceptation de connexion. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Type de fonction de gestion des événements d'établissement de connexion. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Type de fonction de gestion des événements d'établissement de connexion. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
Type de connexion reçue avec fonction de gestion des événements. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
Type de fonction de gestion des événements de réception de données. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
Type de fonction de gestion des événements de transmission de données. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
Type de fonction de gestion des événements de réception partielle. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
Type de fonction de traitement du signal modifié via SendIdle TCP. |
Attributs publics |
|
---|---|
OnAcceptError
|
Délégué de la fonction de gestion des événements d'acceptation de connexion du point de terminaison.
|
OnConnectComplete
|
Délégué de la fonction de gestion des événements d'établissement de connexion du point de terminaison.
|
OnConnectionClosed
|
Délégué de la fonction de gestion des événements de fermeture du point de terminaison.
|
OnConnectionReceived
|
Délégué de la fonction de gestion des événements de réception de la connexion du point de terminaison.
|
OnDataReceived
|
Délégué de la fonction de gestion des événements de réception de texte des messages du point de terminaison.
|
OnDataSent
|
Délégué de gestion de la fonction de gestion des événements de transmission de texte des messages du point de terminaison.
|
OnPeerClose
|
Délégué de la fonction de gestion des événements de réception du point de terminaison.
|
OnTCPSendIdleChanged
|
Délégué de la fonction de gestion des événements du point de terminaison signalant lorsque l'inactivité du canal d'envoi de la connexion TCP est modifiée.
|
ReceiveEnabled
|
bool
Bouton de commande indiquant si l'application reçoit des données
|
State
|
enum nl::Inet::TCPEndPoint::@10
État dynamique de base du point de terminaison sous-jacent.
|
Fonctions publiques |
|
---|---|
Abort(void)
|
void
Fermez involontairement le point de terminaison, en d'autres termes, envoyez des paquets RST.
|
AckReceive(uint16_t len)
|
Accusez réception du texte du message.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Liez le point de terminaison à une adresse IP d'interface.
|
Close(void)
|
Initialisation complète du protocole TCP, c'est-à-dire terminée avec l'envoi et la réception.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Établissez une connexion TCP.
|
DisableKeepAlive(void)
|
Désactiver le "keep-alive" TCP .
|
DisableReceive(void)
|
void
Désactiver la réception.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Activer le "keep-alive" TCP .
|
EnableNoDelay(void)
|
EnableNoDelay
|
EnableReceive(void)
|
void
Activer la réception.
|
Free(void)
|
void
Lance (ou continue) la fermeture complète du protocole TCP, en ignorant les erreurs.
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
Extraire l'adresse IP et le port TCP du point de terminaison local
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
Extraire l'adresse IP et le port TCP du point de terminaison distant
|
IsConnected(void) const
|
bool
Déterminez si une connexion TCP est établie.
|
Listen(uint16_t backlog)
|
Préparez le point de terminaison pour recevoir des messages TCP.
|
LogId(void)
|
uint16_t
Obtenez un identifiant pour le point de terminaison.
|
MarkActive(void)
|
void
Noter l'activité, en d'autres termes, réinitialiser le minuteur d'inactivité.
|
PendingReceiveLength(void)
|
uint32_t
Extrayez la longueur des données reçues non confirmées.
|
PendingSendLength(void)
|
uint32_t
Extrayez la longueur des données en attente de la première transmission.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Remettez le texte du message au début de la file d'attente de réception.
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Envoyer le texte du message lors d'une connexion TCP
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Définissez un délai d'inactivité pour que Connect aboutisse ou renvoie une erreur.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Définissez l'option de socket TCP_USER_TIMEOUT.
|
Shutdown(void)
|
Lancer TCP à mi-chemin, en d’autres termes, terminé avec l’envoi.
|
Types publics
@10
@10
État dynamique de base du point de terminaison sous-jacent.
Les objets sont initialisés dans l'état de l'état, passez aux états suivants correspondant à une simplification des états de la machine à état de transport TCP.
Remarque:L'énumération d'état kBasisState_Closed
est mappée à kState_Ready
pour des raisons historiques de compatibilité binaire. Le kState_Closed
existant permet d'identifier séparément la distinction entre "pas encore ouvert" et "précédemment ouvert maintenant
fermé" qui existait auparavant dans les états kState_Ready
et kState_Closed
.
Propriétés | |
---|---|
kState_Bound
|
Limité au point de terminaison, mais sans écoute. |
kState_Closed
|
Point de terminaison fermé, prêt à être publié. |
kState_Closing
|
Point de terminaison fermant de manière bidirectionnelle. |
kState_Connected
|
Point de terminaison connecté, prêt pour la transaction. |
kState_Connecting
|
Le point de terminaison tente de se connecter. |
kState_Listening
|
Point de terminaison recevant des connexions. |
kState_Ready
|
Point de terminaison initialisé, mais non lié. |
kState_ReceiveShutdown
|
Le point de terminaison a répondu à une fermeture partielle. |
kState_SendShutdown
|
Le point de terminaison a initié sa fermeture partielle. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Type de fonction de gestion des événements d'acceptation des erreurs d'acceptation de connexion.
Fournissez une fonction de ce type au membre délégué OnAcceptError
pour qu'il traite les événements d'erreur d'acceptation de connexion sur endPoint
. L'argument err
fournit des détails spécifiques sur le type d'erreur.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Type de fonction de gestion des événements d'établissement de connexion.
Fournissez une fonction de ce type au membre délégué OnConnectComplete
pour qu'il traite les événements d'établissement de connexion sur endPoint
. L'argument err
distingue les connexions réussies des échecs.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Type de fonction de gestion des événements d'établissement de connexion.
Fournissez une fonction de ce type au membre délégué OnConnectionClosed
pour qu'il traite les événements de fermeture de connexion sur endPoint
. L'argument err
permet de distinguer les terminaisons réussies des échecs.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Type de connexion reçue avec fonction de gestion des événements.
Fournissez une fonction de ce type au membre délégué OnConnectionReceived
pour qu'il traite les événements de réception de connexion sur listeningEndPoint
. Le point de terminaison conEndPoint
nouvellement reçu est situé à l'adresse IP peerAddr
et au port TCP peerPort
.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
Type de fonction de gestion des événements de réception de données.
Fournissez une fonction de ce type au membre délégué OnDataReceived
pour qu'il traite les événements de réception de données sur endPoint
, où data
est le texte du message reçu.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
Un gestionnaire d'événements de réception de données doit accuser réception des données traitées à l'aide de la méthode AckReceive
. La méthode Free
sur le tampon de données doit également être appelée, sauf si PutBackReceivedData
est utilisé à la place.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Type de fonction de gestion des événements de transmission de données.
Fournissez une fonction de ce type au membre délégué OnDataSent
pour traiter les événements de transmission de données sur endPoint
, où len
est la longueur du texte du message ajouté à la fenêtre de transmission TCP, qui peut être envoyé par la pile réseau sous-jacente.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Type de fonction de gestion des événements de réception partielle.
Fournissez une fonction de ce type au membre délégué OnPeerClose
pour qu'il traite les événements de fermeture de connexion sur endPoint
.
Détails | |||
---|---|---|---|
Paramètres |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
Type de fonction de traitement du signal modifié via SendIdle TCP.
Fournissez une fonction de ce type au membre délégué OnTCPSendIdleChanged
pour qu'il traite l'événement correspondant au changement d'état du canal d'envoi de TCPEndPoint (passage de l'état inactif à celui de non inactif).
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
Attributs publics
OnAcceptError
OnAcceptErrorFunct OnAcceptError
Délégué de la fonction de gestion des événements d'acceptation de connexion du point de terminaison.
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
Délégué de la fonction de gestion des événements d'établissement de connexion du point de terminaison.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
Délégué de la fonction de gestion des événements de fermeture du point de terminaison.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
Délégué de la fonction de gestion des événements de réception de la connexion du point de terminaison.
OnDataReceived
OnDataReceivedFunct OnDataReceived
Délégué de la fonction de gestion des événements de réception de texte des messages du point de terminaison.
OnDataSent
OnDataSentFunct OnDataSent
Délégué de gestion de la fonction de gestion des événements de transmission de texte des messages du point de terminaison.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Délégué de la fonction de gestion des événements de réception du point de terminaison.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
Délégué de la fonction de gestion des événements du point de terminaison signalant lorsque l'inactivité du canal d'envoi de la connexion TCP est modifiée.
Les couches supérieures l'utilisent pour prendre les mesures appropriées selon que les données envoyées ont été transmises au pair de manière fiable ou non.
ReceiveEnabled
bool ReceiveEnabled
Bouton de commande indiquant si l'application reçoit des données
État
enum nl::Inet::TCPEndPoint::@10 State
État dynamique de base du point de terminaison sous-jacent.
Les objets sont initialisés dans l'état de l'état, passez aux états suivants correspondant à une simplification des états de la machine à état de transport TCP.
Remarque:L'énumération d'état kBasisState_Closed
est mappée à kState_Ready
pour des raisons historiques de compatibilité binaire. Le kState_Closed
existant permet d'identifier séparément la distinction entre "pas encore ouvert" et "précédemment ouvert maintenant
fermé" qui existait auparavant dans les états kState_Ready
et kState_Closed
.
Fonctions publiques
Annuler
void Abort( void )
Fermez involontairement le point de terminaison, en d'autres termes, envoyez des paquets RST.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Accusez réception du texte du message.
Utilisez cette méthode pour accuser réception de tout ou partie des données reçues. La sémantique opérationnelle n'est pas définie si la valeur len
est supérieure au nombre total de données reçues non confirmées en attente.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
Lier
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Liez le point de terminaison à une adresse IP d'interface.
Lie le point de terminaison à l'adresse IP de l'interface réseau spécifiée.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
Sur LwIP, cette méthode ne doit pas être appelée avec le verrouillage de la pile LwIP déjà acquis.
Fermer
INET_ERROR Close( void )
Initialisation complète du protocole TCP, c'est-à-dire terminée avec l'envoi et la réception.
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs renvoyées |
|
Connecter
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Établissez une connexion TCP.
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs renvoyées |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Désactiver le "keep-alive" TCP .
TCPEndPoint::DisableKeepAlive.
Désactiver les vérifications TCP keepalive sur la connexion TCP associée
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valeurs renvoyées |
|
Remarque:Cette méthode ne peut être appelée que lorsque le point de terminaison se trouve dans l'un des états connectés. Cette méthode n'a aucun effet si les messages keepalive n'ont pas été activés sur le point de terminaison.
DisableReceive
void DisableReceive( void )
Désactiver la réception.
Désactiver tous les gestionnaires d'événements Les données envoyées à un point de terminaison qui désactive la réception sont confirmées jusqu'à ce que la fenêtre de réception soit épuisée.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Activer le "keep-alive" TCP .
Démarrer automatiquement la transmission TCP "keep-alive" de vérifier les segments toutes les interval
secondes. La connexion est automatiquement abandonnée après la réception d'une réponse négative ou après l'envoi de segments de vérification timeoutCount
sans recevoir de réponse positive.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||
Valeurs renvoyées |
|
Pour plus d'informations sur les spécifications, consultez la section 4.2.3.6 du document RFC 1122.
Activer les vérifications du message keepalive TCP sur la connexion TCP associée
Remarque:Cette méthode ne peut être appelée que lorsque le point de terminaison se trouve dans l'un des états connectés. Cette méthode peut être appelée plusieurs fois pour ajuster l'intervalle ou le délai avant expiration du message keepalive.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay
Désactivez l'algorithme de mise en mémoire tampon de données dans TCP en définissant les options de socket TCP_NODELAY.
EnableReceive
void EnableReceive( void )
Activer la réception.
Activer tous les gestionnaires d'événements Les données envoyées à un point de terminaison qui désactive la réception sont confirmées jusqu'à ce que la fenêtre de réception soit épuisée.
Gratuit
void Free( void )
Lance (ou continue) la fermeture complète du protocole TCP, en ignorant les erreurs.
L'objet est renvoyé dans le pool sans frais, et toutes les références utilisateur restantes sont par la suite non valides.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Extraire l'adresse IP et le port TCP du point de terminaison local
N'utilisez pas de valeurs de pointeur NULL
pour ces arguments.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Extraire l'adresse IP et le port TCP du point de terminaison distant
N'utilisez pas de valeurs de pointeur NULL
pour ces arguments.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
IsConnected
bool IsConnected( void ) const
Déterminez si une connexion TCP est établie.
Écouter
INET_ERROR Listen( uint16_t backlog )
Préparez le point de terminaison pour recevoir des messages TCP.
Si State
est déjà défini sur kState_Listening
, aucune opération n'est effectuée. Sinon, State
est défini sur kState_Listening
et le point de terminaison est prêt à recevoir des messages TCP, selon la sémantique de la plate-forme.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs renvoyées |
|
Sur certaines plates-formes, l'argument backlog
n'est pas utilisé (la profondeur de la file d'attente est fixe ; une seule connexion peut être acceptée à la fois).
Sur les systèmes LwIP, cette méthode ne doit pas être appelée lorsque le verrou de pile LwIP est déjà acquis.
LogId
uint16_t LogId( void )
Obtenez un identifiant pour le point de terminaison.
Détails | |
---|---|
Renvoie |
Renvoie un identifiant unique opaque pour les journaux d'utilisation.
|
MarkActive
void MarkActive( void )
Noter l'activité, en d'autres termes, réinitialiser le minuteur d'inactivité.
Remettez le délai d'inactivité à zéro.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Extrayez la longueur des données reçues non confirmées.
Détails | |
---|---|
Renvoie |
Nombre d'octets de la file d'attente de réception qui n'ont pas encore été confirmés avec
AckReceive(uint16_t len) . |
PendingSendLength
uint32_t PendingSendLength( void )
Extrayez la longueur des données en attente de la première transmission.
Détails | |
---|---|
Renvoie |
Nombre d'octets non transmis dans la file d'attente de transmission.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Remettez le texte du message au début de la file d'attente de réception.
Cette méthode ne peut être appelée que par les gestionnaires d'événements de réception de données pour remettre une partie de données non confirmée dans la file d'attente de réception. La sémantique opérationnelle n'est pas définie si l'appelant ne fait pas partie du champ d'application d'un gestionnaire d'événements de réception de données, si data
n'est pas le Weave::System::PacketBuffer
fourni au gestionnaire ou si data
ne contient pas la partie non confirmée restante après les octets confirmés par un appel précédent à la méthode AckReceive(uint16_t len)
.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs renvoyées |
|
Envoyer
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Envoyer le texte du message lors d'une connexion TCP
La méthode Weave::System::PacketBuffer::Free
est appelée sur l'argument data
, que la transmission ait réussi ou échoué.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs renvoyées |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Définissez un délai d'inactivité pour que Connect aboutisse ou renvoie une erreur.
Détails | |||
---|---|---|---|
Paramètres |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
Définissez l'option de socket TCP_USER_TIMEOUT.
Lorsque cette valeur est supérieure à 0, cela indique la durée maximale, en millisecondes, pendant laquelle les données transmises peuvent rester non confirmées avant que le protocole TCP ne ferme de force la connexion correspondante. Si la valeur de l'option est définie sur 0, le protocole TCP utilise la valeur par défaut du système. Pour en savoir plus, consultez le document RFC 5482.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
Définissez l'option du socket de délai avant expiration de l'utilisateur TCP.
Lorsque cette valeur est supérieure à 0, cela indique la durée maximale, en millisecondes, pendant laquelle les données transmises peuvent rester non confirmées avant que le protocole TCP ne ferme de force la connexion correspondante. Si la valeur de l'option est définie sur 0, le protocole TCP utilise la valeur par défaut du système. Pour en savoir plus, consultez le document RFC 5482.
Remarque:Cette méthode ne peut être appelée que lorsque le point de terminaison se trouve dans l'un des états connectés. Cette méthode peut être appelée plusieurs fois pour ajuster l'intervalle ou le délai avant expiration du message keepalive.
Arrêt
INET_ERROR Shutdown( void )
Lancer TCP à mi-chemin, en d’autres termes, terminé avec l’envoi.
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs renvoyées |
|