nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Les objets de cette classe représentent des points de terminaison de transport TCP.
Résumé
La couche Nest Inet encapsule les méthodes d'interaction avec les points de terminaison de transport TCP (sockets SOCK_STREAM sur Linux et les systèmes dérivés de BSD) ou 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{
|
enum É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'erreur 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 fonction de gestion des événements reçue par la connexion. |
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 semi-fermeture. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
Le type de fonction TCP SendIdle a modifié la fonction de gestion du signal. |
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 la gestion des événements de transmission de SMS du point de terminaison.
|
OnPeerClose
|
Délégué de la fonction de gestion des événements de gestion des événements de fermeture partielle 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 change.
|
ReceiveEnabled
|
bool
Contacteur 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
Fermer le point de terminaison de manière annulée, c'est-à-dire envoyer des paquets RST.
|
AckReceive(uint16_t len)
|
Confirmez la 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)
|
Lancer la fermeture complète du protocole TCP, en d'autres termes, se terminer par l'envoi et la réception.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Lancer une connexion TCP
|
DisableKeepAlive(void)
|
Désactivez l'option TCP "keep-alive".
|
DisableReceive(void)
|
void
Désactiver la réception
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Activez l'option TCP "keep-alive".
|
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)
|
Extrayez l'adresse IP et le port TCP du point de terminaison local.
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
Extrayez l'adresse IP et le port TCP du point de terminaison distant.
|
IsConnected(void) const
|
bool
Déterminez si la connexion TCP est établie.
|
Listen(uint16_t backlog)
|
Préparer le point de terminaison pour qu'il reçoive des messages TCP
|
LogId(void)
|
uint16_t
Obtenez un identifiant pour le point de terminaison.
|
MarkActive(void)
|
void
Notez l'activité : en d'autres termes, réinitialisez le délai d'inactivité.
|
PendingReceiveLength(void)
|
uint32_t
Extrayez la longueur des données de réception 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)
|
Renvoyer le texte du message en haut de la file d'attente de réception
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Envoie le texte du message via la connexion TCP.
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Définissez un délai avant expiration pour que Connect soit réussi ou renvoie une erreur.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Définissez l'option de socket TCP_USER_TIMEOUT.
|
Shutdown(void)
|
Lancer la fermeture TCP partielle, c'est-à-dire se terminer par l'envoi.
|
Types publics
@10
@10
État dynamique de base du point de terminaison sous-jacent.
Les objets sont initialisés à l'état "ready", passez aux états suivants correspondant à une simplification des états de la machine d'état de transport TCP.
Remarque:L'énumération de l'état kBasisState_Closed
est mappée sur kState_Ready
pour des raisons de compatibilité binaire historique. 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
|
Le point de terminaison est lié, mais n'écoute pas. |
kState_Closed
|
Point de terminaison fermé, prêt pour la publication. |
kState_Closing
|
Fermeture bidirectionnelle du point de terminaison. |
kState_Connected
|
Point de terminaison connecté, prêt pour les communications tx/rx. |
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 lancé sa demi-fermeture. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Type de fonction de gestion des événements d'erreur d'acceptation de connexion.
Fournissez une fonction de ce type au membre délégué OnAcceptError
pour traiter les événements d'erreur d'acceptation de connexion sur endPoint
. L'argument err
fournit des détails spécifiques sur le type de l'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 traiter 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 traiter les événements de terminaison de connexion sur endPoint
. L'argument err
distingue les arrêts réussis des échecs.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Type de fonction de gestion des événements reçue par la connexion.
Fournissez une fonction de ce type au membre délégué OnConnectionReceived
pour traiter les événements de réception de connexion sur listeningEndPoint
. Le point de terminaison conEndPoint
que vous venez de recevoir se trouve à l'adresse IP peerAddr
et sur le 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 traiter 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
du 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 semi-fermeture.
Fournissez une fonction de ce type au membre délégué OnPeerClose
pour traiter les événements de terminaison de connexion sur endPoint
.
Détails | |||
---|---|---|---|
Paramètres |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
Le type de fonction TCP SendIdle a modifié la fonction de gestion du signal.
Fournissez une fonction de ce type au membre délégué OnTCPSendIdleChanged
pour traiter l'événement du canal d'envoi du TCPEndPoint (passage de l'état d'inactivité à l'état 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 la gestion des événements de transmission de SMS du point de terminaison.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Délégué de la fonction de gestion des événements de gestion des événements de fermeture partielle 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 change.
Les couches supérieures s'en servent pour prendre les mesures appropriées selon que les données envoyées ont été transmises au pair de manière fiable.
ReceiveEnabled
bool ReceiveEnabled
Contacteur 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 à l'état "ready", passez aux états suivants correspondant à une simplification des états de la machine d'état de transport TCP.
Remarque:L'énumération de l'état kBasisState_Closed
est mappée sur kState_Ready
pour des raisons de compatibilité binaire historique. 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 )
Fermer le point de terminaison de manière annulée, c'est-à-dire envoyer des paquets RST.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Confirmez la réception du texte du message.
Utilisez cette méthode pour confirmer la réception de tout ou partie des données reçues. La sémantique opérationnelle n'est pas définie si len
est supérieur au total des données reçues non confirmées en attente.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
Bind
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 de retour |
|
Sur LwIP, cette méthode ne doit pas être appelée avec le verrouillage de pile LwIP déjà acquis.
Fermer
INET_ERROR Close( void )
Lancer la fermeture complète du protocole TCP, en d'autres termes, se terminer par l'envoi et la réception.
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs de retour |
|
Associer
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Lancer 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 de retour |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Désactivez l'option TCP "keep-alive".
TCPEndPoint::DisableKeepAlive :
Désactivez les vérifications keepalive TCP sur la connexion TCP associée.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valeurs de retour |
|
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ésactivez tous les gestionnaires d'événements. Les données envoyées à un point de terminaison qui désactive la réception seront confirmées jusqu'à ce que la fenêtre de réception soit épuisée.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Activez l'option TCP "keep-alive".
TCPEndPoint::EnableKeepAlive :
Démarrer automatiquement la transmission automatique de segments de vérification TCP "keep-alive" toutes les interval
secondes. La connexion s'interrompt automatiquement après 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 de retour |
|
Reportez-vous à la section 4.2.3.6 du document RFC 1122 pour en savoir plus sur la spécification.
Activer les vérifications 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 des messages keepalive ou le nombre de délais avant expiration.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay.
Désactivez l'algorithme de mise en mémoire tampon du nom dans TCP en définissant les options de socket TCP_NOREQUEST.
EnableReceive
void EnableReceive( void )
Activer la réception
Activez tous les gestionnaires d'événements. Les données envoyées à un point de terminaison qui désactive la réception seront confirmées jusqu'à ce que la fenêtre de réception soit épuisée.
Sans frais
void Free( void )
Lance (ou continue) la fermeture complète du protocole TCP en ignorant les erreurs.
L'objet est renvoyé au pool libre, et toutes les références utilisateur restantes sont par la suite invalides.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Extrayez l'adresse IP et le port TCP du point de terminaison local.
N'utilisez pas de valeurs de pointeur NULL
pour les arguments.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Extrayez l'adresse IP et le port TCP du point de terminaison distant.
N'utilisez pas de valeurs de pointeur NULL
pour les arguments.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
IsConnected
bool IsConnected( void ) const
Déterminez si la connexion TCP est établie.
Écouter
INET_ERROR Listen( uint16_t backlog )
Préparer le point de terminaison pour qu'il reçoive 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, conformément à la sémantique de la plate-forme.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
Sur certaines plates-formes, l'argument backlog
n'est pas utilisé (la profondeur de la file d'attente est fixe, et une seule connexion peut être acceptée à la fois).
Sur les systèmes LwIP, cette méthode ne doit pas être appelée avec le verrouillage de pile LwIP 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 )
Notez l'activité : en d'autres termes, réinitialisez le délai d'inactivité.
Remettez le minuteur d'inactivité à zéro.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Extrayez la longueur des données de réception non confirmées.
Détails | |
---|---|
Renvoie |
Nombre d'octets dans la file d'attente de réception n'ayant pas encore été confirmés par
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 )
Renvoyer le texte du message en haut 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 des données non confirmées 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 de retour |
|
Envoyer
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Envoie le texte du message via la 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 de retour |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Définissez un délai avant expiration pour que Connect soit réussi 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, elle indique, en millisecondes, la durée maximale pendant laquelle les données transmises peuvent rester non confirmées avant que le TCP ne ferme de force la connexion correspondante. Si la valeur de l'option est 0, TCP utilisera la valeur par défaut du système. Pour plus d'informations, consultez la norme RFC 5482.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
Définissez l'option de socket pour le délai d'expiration de l'utilisateur TCP.
Lorsque cette valeur est supérieure à 0, elle indique, en millisecondes, la durée maximale pendant laquelle les données transmises peuvent rester non confirmées avant que le TCP ne ferme de force la connexion correspondante. Si la valeur de l'option est 0, TCP utilise la valeur par défaut du système. Pour plus d'informations, consultez la norme 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 des messages keepalive ou le nombre de délais avant expiration.
Arrêt
INET_ERROR Shutdown( void )
Lancer la fermeture TCP partielle, c'est-à-dire se terminer par l'envoi.
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs de retour |
|