TCP

Ce module inclut des fonctions de contrôle de la communication TCP.

Résumé

Énumérations

anonymous enum enum
Définit les indicateurs transmis à otTcpConnect().
anonymous enum enum
Définit les indicateurs transmis à otTcpSendByReference.
otTcpDisconnectedReason enum
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
Définit les actions de connexion entrantes.

Typedefs

otLinkedBuffer typedef
Structure de tampon liée à utiliser avec le TCP.
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
Ce rappel indique que la connexion TCP est maintenant prête pour une communication bidirectionnelle.
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
Ce rappel indique qu'une connexion entrante correspondant à cet écouteur TCP est arrivée.
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
Ce rappel indique que la connexion a été interrompue et ne doit plus être utilisée, ou qu'une connexion est passée à l'état TIME-WAIT.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
Contient des arguments de la fonction otTcpEndpointInitialize().
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
Ce rappel informe l'application que le handshake TCP à trois voies est terminé et que la connexion est maintenant établie.
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
Ce rappel informe l'application si une progression a été effectuée dans le transfert des données du tampon d'envoi vers le destinataire.
otTcpIncomingConnectionAction typedef
Définit les actions de connexion entrantes.
otTcpListener typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
Contient des arguments de la fonction otTcpListenerInitialize().
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Ce rappel indique le nombre d'octets disponibles à la consommation à partir du tampon de réception.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
Ce rappel informe l'application que les données du aData fourni ont été confirmées par le pair de connexion, et que le aData et les données qu'il contient peuvent être récupérés par l'application.

distantes

otTcpAbort(otTcpEndpoint *aEndpoint)
Met fin à la connexion TCP associée à ce point de terminaison TCP de manière forcée.
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
Lie le point de terminaison TCP à une adresse IP et à un port.
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Informe la pile TCP que l'application a fini de traiter aNumBytes octets de données au début du tampon de réception et que la pile TCP n'a plus besoin de conserver ces octets dans le tampon de réception.
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
Enregistre l'hôte et le port distants pour cette connexion.
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
Déinitialise ce point de terminaison TCP.
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
Permet d'obtenir le pointeur de contexte associé à aEndpoint lors de l'initialisation.
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
Récupère l'instance otInstance associée à aEndpoint lors de l'initialisation.
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
Initialise un point de terminaison TCP.
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
Récupère un pointeur vers l'hôte et le port locaux d'un point de terminaison TCP.
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
Récupère un pointeur vers l'hôte et le port d'un point de terminaison TCP.
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
Entraîne le déclenchement des rappels de cet écouteur TCP par les connexions TCP entrantes correspondant à l'adresse IP et au port spécifiés.
otTcpListenerDeinitialize(otTcpListener *aListener)
Déinitialise cet écouteur TCP.
otTcpListenerGetContext(otTcpListener *aListener)
void *
Permet d'obtenir le pointeur de contexte associé à aListener lors de l'initialisation.
otTcpListenerGetInstance(otTcpListener *aListener)
Récupère l'instance otInstance associée à aListener lors de l'initialisation.
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
Initialise un écouteur TCP.
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
Fournit à l'application une chaîne de tampon associée qui fait référence aux données actuellement dans le tampon de réception TCP.
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
Réorganise le tampon de réception pour qu'il soit entièrement contigu en mémoire.
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Ajoute des données au tampon d'envoi en prolongeant la longueur de l'élément otLinkedBuffer final dans le tampon d'envoi selon la quantité spécifiée.
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
Ajoute au tampon d'envoi les données référencées par le tampon associé pointé par aBuffer.
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
Informe le pair de connexion que ce point de terminaison TCP n'enverra plus de données.
otTcpStopListening(otTcpListener *aListener)
Entraîne l'arrêt de l'écoute des connexions entrantes par cet écouteur TCP.

Structs

otLinkedBuffer

Structure de tampon liée à utiliser avec le TCP.

otTcpEndpoint

Représente un point de terminaison TCP.

otTcpEndpointInitializeArgs

Contient des arguments de la fonction otTcpEndpointInitialize().

otTcpListener

Représente un écouteur TCP.

otTcpListenerInitializeArgs

Contient des arguments de la fonction otTcpListenerInitialize().

Énumérations

énumération anonyme

 anonymous enum

Définit les indicateurs transmis à otTcpConnect().

énumération anonyme

 anonymous enum

Définit les indicateurs transmis à otTcpSendByReference.

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

Définit les actions de connexion entrantes.

Il est utilisé dans le rappel otTcpAcceptReady().

Propriétés
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Acceptez la connexion entrante.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

différer (ignorer discrètement) la connexion entrante ;

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Refuser la connexion entrante.

Typedefs

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

Structure de tampon liée à utiliser avec le TCP.

Une seule structure otLinkedBuffer référence un tableau d'octets en mémoire, via mData et mLength. Le champ mNext permet de former une chaîne de structures otLinkedBuffer.

otTcpAcceptDone

void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)

Ce rappel indique que la connexion TCP est maintenant prête pour une communication bidirectionnelle.

Dans le cas de TCP Fast Open, cela peut se produire avant la fin du handshake de la connexion TCP. L'application est fournie avec les pointeurs de contexte à la fois pour l'écouteur TCP qui a accepté la connexion et pour le point de terminaison TCP dans lequel elle a été acceptée. Le contexte fourni est celui associé à l'écouteur TCP.

Détails
Paramètres
[in] aListener
Écouteur TCP correspondant à la connexion entrante.
[in] aEndpoint
Point de terminaison TCP dans lequel la connexion entrante a été acceptée.
[in] aPeer
l'hôte et le port d'où provient la connexion entrante.

otTcpAcceptReady

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

Ce rappel indique qu'une connexion entrante correspondant à cet écouteur TCP est arrivée.

La réponse typique est que l'application doit accepter la connexion entrante. Pour ce faire, il renseigne aAcceptInto avec un pointeur vers le point de terminaison otTcpEndpoint dans lequel accepter la connexion entrante. Ce otTcpEndpoint doit déjà être initialisé à l'aide de otTcpEndpointInitialize(). Ensuite, l'application renvoie OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT.

L'application peut également refuser la connexion entrante. L'application peut procéder de deux façons. Tout d'abord, si l'application renvoie OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread ignore silencieusement la demande d'établissement de la connexion ; le pair de connexion retransmet probablement la requête, auquel cas le rappel sera à nouveau appelé. Cela est utile si des ressources ne sont actuellement pas disponibles pour accepter la connexion, mais qu'elles peuvent l'être lorsque le pair de connexion retransmet sa tentative d'établissement de connexion. Deuxièmement, si l'application renvoie OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, OpenThread envoie un message « connexion refusée » à l'hôte qui a tenté d'établir une connexion. Si l'application refuse la connexion entrante, il n'est pas nécessaire de renseigner aAcceptInto.

Détails
Paramètres
[in] aListener
Écouteur TCP correspondant à la connexion entrante.
[in] aPeer
Hôte et port d'où provient la connexion entrante.
[out] aAcceptInto
Point de terminaison TCP dans lequel accepter la connexion entrante.
Renvoie
Description de la gestion de la connexion entrante.

otTcpDisconnected

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

Ce rappel indique que la connexion a été interrompue et ne doit plus être utilisée, ou qu'une connexion est passée à l'état TIME-WAIT.

Cela peut se produire si une tentative d'établissement de connexion (initiée en appelant otTcpConnect()) ou n'importe quel point ultérieur (par exemple, si la connexion expire ou si un segment RST est reçu du pair de connexion). Une fois ce rappel déclenché, toutes les ressources fournies par l'application pour cette connexion (c'est-à-dire tous les otLinkedBuffers et la mémoire auxquels ils font référence, mais pas le point de terminaison TCP lui-même ni l'espace pour les tampons de réception) peuvent être récupérées. Dans le cas d'une connexion entrant dans l'état TIME-WAIT, ce rappel est appelé deux fois : une fois lors de l'entrée dans l'état TIME-WAIT (avec OT_TCP_DISCONNECTED_REASON_TIME_WAIT), puis une nouvelle fois lorsque l'état TIME-WAIT expire (avec OT_TCP_DISCONNECTED_REASON_NORMAL).

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP dont la connexion a été perdue.
[in] aReason
Raison pour laquelle la connexion a été perdue.

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

Contient des arguments de la fonction otTcpEndpointInitialize().

otTcpEstablished

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Ce rappel informe l'application que le handshake TCP à trois voies est terminé et que la connexion est maintenant établie.

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP dont la connexion est maintenant établie.

otTcpForwardProgress

void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)

Ce rappel informe l'application si une progression a été effectuée dans le transfert des données du tampon d'envoi vers le destinataire.

Ce rappel n'est pas nécessaire au bon fonctionnement du protocole TCP. La plupart des applications peuvent simplement s'appuyer sur le rappel otTcpSendDone() pour récupérer les tampons associés une fois que la pile TCP a fini de les utiliser. L'objectif de ce rappel est de prendre en charge les applications avancées qui bénéficient d'informations plus précises sur la progression de la connexion dans le transfert des données vers le pair de connexion.

L'opération de ce rappel est étroitement liée au tampon d'envoi du TCP. Le tampon d'envoi peut être considéré comme ayant deux régions. Tout d'abord, il y a la région "en cours de transfert" à la tête (avant) du tampon d'envoi. Il correspond aux données qui ont été envoyées au destinataire, mais qui n'ont pas encore été confirmées. La seconde est la région "backlog", qui comprend toutes les données du tampon d'envoi qui ne se trouvent pas dans la région "en cours de transfert". La région "en attente" correspond aux données en attente d'envoi, mais qui n'ont pas encore été envoyées.

Le rappel est invoqué en réponse à deux types d'événements. Tout d'abord, la région "en cours de transfert" du tampon d'envoi peut être réduite (par exemple, lorsque le destinataire reconnaît les données envoyées précédemment). Ensuite, la région du "backlog" du tampon d'envoi peut être réduite (par exemple, de nouvelles données ont été envoyées). Ces deux conditions se produisent souvent en même temps, en réponse à un segment ACK du pair de connexion, c'est pourquoi elles sont combinées dans un seul rappel.

La pile TCP n'utilise que les octets aInSendBuffer à la fin du tampon d'envoi. Lorsque aInSendBuffer diminue d'une valeur x, cela signifie que x octets supplémentaires qui étaient auparavant en tête du tampon d'envoi ne font plus partie du tampon d'envoi et peuvent désormais être récupérés (c'est-à-dire remplacés) par l'application. Notez que la structure otLinkedBuffer elle-même ne peut être récupérée qu'une fois que tous les octets auxquels elle fait référence ne font plus partie du tampon d'envoi.

Ce rappel sous-utilise otTcpSendDone(), au sens suivant: les applications peuvent déterminer à quel moment les tampons associés peuvent être récupérés en comparant aInSendBuffer au nombre d'octets qui se trouvent dans chaque tampon associé. Cependant, nous nous attendons à ce que otTcpSendDone(), qui indique directement quels otLinkedBuffers peuvent être récupérés, sera beaucoup plus simple à utiliser. Si les deux rappels sont enregistrés et sont déclenchés par le même événement (par exemple, le même segment ACK reçu), le rappel otTcpSendDone() est déclenché en premier, suivi de ce rappel.

De plus, ce rappel fournit aBacklog, qui indique le nombre d'octets de données dans le tampon d'envoi qui ne sont pas encore en cours de transfert. Pour les applications qui ne souhaitent ajouter des données au tampon d'envoi que lorsqu'elles ont la certitude qu'elles seront bientôt envoyées, il peut être souhaitable de n'envoyer des données que lorsque aBacklog est suffisamment faible (0 ou proche de 0). Par exemple, une application peut utiliser aBacklog pour pouvoir réagir à l'accumulation de la file d'attente en supprimant ou en agrégeant des données afin d'éviter de créer un arriéré de données.

Après un appel à otTcpSendByReference() ou otTcpSendByExtension() avec un nombre positif d'octets, le rappel otTcpForwardProgress() est assuré d'être appelé pour indiquer à quel moment les octets ajoutés au tampon d'envoi sont envoyés. L'appel de otTcpForwardProgress() peut être effectué immédiatement après l'ajout des octets au tampon d'envoi (si certains de ces octets sont immédiatement envoyés, ce qui réduit le traitement en attente), ou ultérieurement (une fois que la connexion enverra une partie ou la totalité des données, ce qui réduira le traitement en attente). Par "Immédiatement", nous entendons que l'exécution du rappel dans un tasklet est immédiatement planifiée. Pour éviter la complexité liée à la réentrance, le rappel otTcpForwardProgress() n'est jamais appelé directement à partir des fonctions otTcpSendByReference() ou otTcpSendByExtension().

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP de la connexion.
[in] aInSendBuffer
Nombre d'octets dans le tampon d'envoi (somme des régions "en cours de transfert" et "en attente").
[in] aBacklog
Nombre d'octets mis en file d'attente pour l'envoi, mais qui n'ont pas encore été envoyés (région "en attente").

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Définit les actions de connexion entrantes.

Il est utilisé dans le rappel otTcpAcceptReady().

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

Contient des arguments de la fonction otTcpListenerInitialize().

otTcpReceiveAvailable

void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)

Ce rappel indique le nombre d'octets disponibles à la consommation à partir du tampon de réception.

Elle est appelée chaque fois que des octets sont ajoutés au tampon de réception et lorsque la fin du flux est atteinte. Si la fin du flux est atteinte (c'est-à-dire si plus aucune donnée ne peut être lue parce que le pair de connexion a fermé son extrémité de la connexion pour l'écriture), aEndOfStream est défini sur "true". Enfin, aBytesRemaining indique la capacité restante dans le tampon de réception pour stocker les données supplémentaires.

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP de la connexion.
[in] aBytesAvailable
Nombre d'octets dans le tampon de réception de la connexion.
[in] aEndOfStream
Indique si des données supplémentaires, en plus de celles déjà présentes dans le tampon de réception de la connexion, peuvent être reçues.
[in] aBytesRemaining
Nombre d'octets supplémentaires pouvant être reçus avant que le tampon de réception ne soit saturé.

otTcpSendDone

void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)

Ce rappel informe l'application que les données du aData fourni ont été confirmées par le pair de connexion, et que le aData et les données qu'il contient peuvent être récupérés par l'application.

Les aData sont garantis comme étant identiques à ceux transmis au TCP via otTcpSendByReference(), y compris toutes les extensions concernées via otTcpSendByExtension().

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP de la connexion.
[in] aData
Pointeur vers otLinkedBuffer pouvant être récupéré.

distantes

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Met fin à la connexion TCP associée à ce point de terminaison TCP de manière forcée.

Le point de terminaison TCP devient immédiatement libre d'utilisation pour une autre connexion et vide les tampons d'envoi et de réception, en transférant la propriété de toutes les données fournies par l'application dans les appels otTcpSendByReference() et otTcpSendByExtension() vers l'application. Les rappels et la mémoire du point de terminaison TCP restent associés au tampon de réception.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP représentant le point de terminaison TCP à annuler.
Valeurs de retour
OT_ERROR_NONE
La connexion du point de terminaison TCP a bien été annulée.
OT_ERROR_FAILED
Échec de l'annulation de la connexion du point de terminaison TCP.

otTcpBind

otError otTcpBind(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName
)

Lie le point de terminaison TCP à une adresse IP et à un port.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP à lier.
[in] aSockName
Adresse et port auxquels lier ce point de terminaison TCP.
Valeurs de retour
OT_ERROR_NONE
Le point de terminaison TCP a bien été associé.
OT_ERROR_FAILED
Échec de la liaison du point de terminaison TCP.

otTcpCommitReceive

otError otTcpCommitReceive(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Informe la pile TCP que l'application a fini de traiter aNumBytes octets de données au début du tampon de réception et que la pile TCP n'a plus besoin de conserver ces octets dans le tampon de réception.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP représentant le point de terminaison TCP sur lequel recevoir des données.
[in] aNumBytes
Nombre d'octets consommés.
[in] aFlags
Indicateurs spécifiant les options pour cette opération (aucune pour l'instant).
Valeurs de retour
OT_ERROR_NONE
L'opération de réception a bien été effectuée.
OT_ERROR_FAILED
Échec de l'opération de réception.

otTcpConnect

otError otTcpConnect(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName,
  uint32_t aFlags
)

Enregistre l'hôte et le port distants pour cette connexion.

L'ouverture rapide TCP doit être activée ou désactivée à l'aide de aFlags. S'il est désactivé, le handshake d'établissement de connexion TCP est lancé immédiatement. Si elle est activée, cette fonction enregistre simplement l'hôte et le port distants, et le handshake d'établissement de la connexion TCP n'a lieu que lors du premier appel à otTcpSendByReference().

Si TCP Fast Open est désactivé, l'appelant doit attendre le rappel otTcpEstablished, qui indique que le handshake d'établissement de connexion TCP a lieu avant de pouvoir commencer à envoyer des données, par exemple en appelant otTcpSendByReference().

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP à connecter.
[in] aSockName
Adresse IP et port de l'hôte auquel se connecter.
[in] aFlags
Indicateurs spécifiant les options pour cette opération (voir l'énumération ci-dessus).
Valeurs de retour
OT_ERROR_NONE
L'opération a bien été effectuée.
OT_ERROR_FAILED
Échec de l'opération.

otTcpEndpointDeinitialize

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

Déinitialise ce point de terminaison TCP.

Cela signifie qu'OpenThread n'effectue plus le suivi de ce point de terminaison TCP et libère toutes les ressources qu'il a allouées en interne à ce point de terminaison TCP. L'application peut réutiliser la mémoire qui sauvegarde le point de terminaison TCP comme elle le souhaite.

Si elle correspond à une connexion TCP active, la connexion est interrompue de manière non cérémonie (comme dans otTcpAbort()). Toutes les ressources fournies par l'application pour ce point de terminaison TCP (tampons liés pour le tampon d'envoi, mémoire pour le tampon de réception, structure aEndpoint elle-même, etc.) sont immédiatement renvoyées à l'application.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP à déinitialiser.
Valeurs de retour
OT_ERROR_NONE
Le point de terminaison TCP a bien été déinitialisé.
OT_ERROR_FAILED
Échec de la déinitialisation du point de terminaison TCP.

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Permet d'obtenir le pointeur de contexte associé à aEndpoint lors de l'initialisation.

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP dont le contexte à obtenir.
Renvoie
Pointeur de contexte associé à aEndpoint.

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

Récupère l'instance otInstance associée à aEndpoint lors de l'initialisation.

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP dont l'instance à obtenir.
Renvoie
Pointeur otInstance associé à aEndpoint.

otTcpEndpointInitialize

otError otTcpEndpointInitialize(
  otInstance *aInstance,
  otTcpEndpoint *aEndpoint,
  const otTcpEndpointInitializeArgs *aArgs
)

Initialise un point de terminaison TCP.

En appelant cette fonction, OpenThread peut suivre le point de terminaison TCP et stocker et récupérer les données TCP dans aEndpoint. L'application ne doit pas accéder directement aux champs de aEndpoint ni les modifier. Si l'application doit récupérer la mémoire de sauvegarde aEndpoint, elle doit appeler otTcpEndpointDeinitialize().

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aEndpoint
Pointeur vers une structure de point de terminaison TCP.
[in] aArgs
Pointeur vers une structure d'arguments.
Valeurs de retour
OT_ERROR_NONE
Le point de terminaison TCP a bien été ouvert.
OT_ERROR_FAILED
Échec de l'ouverture du point de terminaison TCP.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

Récupère un pointeur vers l'hôte et le port locaux d'un point de terminaison TCP.

Le contenu de l'hôte et du port peut être obsolète si ce socket n'est pas connecté et n'a pas été lié après sa dernière déconnexion.

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP dont l'hôte et le port locaux doivent être obtenus.
Renvoie
Hôte local et port de aEndpoint

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

Récupère un pointeur vers l'hôte et le port d'un point de terminaison TCP.

Le contenu de l'hôte et du port peut être obsolète si ce socket n'est pas connecté.

Détails
Paramètres
[in] aEndpoint
Point de terminaison TCP dont l'hôte et le port du pair à obtenir.
Renvoie
Hôte et port du pair de connexion de aEndpoint

otTcpListen

otError otTcpListen(
  otTcpListener *aListener,
  const otSockAddr *aSockName
)

Entraîne le déclenchement des rappels de cet écouteur TCP par les connexions TCP entrantes correspondant à l'adresse IP et au port spécifiés.

Détails
Paramètres
[in] aListener
Pointeur vers la structure d'écouteur TCP qui doit commencer à écouter.
[in] aSockName
Adresse et port sur lesquels écouter les connexions entrantes.
Valeurs de retour
OT_ERROR_NONE
L'écoute sur l'écouteur TCP a bien été lancée.
OT_ERROR_FAILED
Échec du lancement de l'écoute sur l'écouteur TCP.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Déinitialise cet écouteur TCP.

Cela signifie qu'OpenThread n'effectue plus le suivi de cet écouteur TCP et libère toutes les ressources qu'il a allouées en interne à cet écouteur TCP. L'application peut réutiliser la mémoire pour sauvegarder l'écouteur TCP comme elle le souhaite.

Si l'écouteur TCP est en cours d'écoute, il cesse d'écouter.

Détails
Paramètres
[in] aListener
Pointeur vers la structure d'écouteur TCP à déinitialiser.
Valeurs de retour
OT_ERROR_NONE
L'écouteur TCP a bien été déinitialisé.
OT_ERROR_FAILED
Échec de la déinitialisation de l'écouteur TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Permet d'obtenir le pointeur de contexte associé à aListener lors de l'initialisation.

Détails
Paramètres
[in] aListener
Écouteur TCP dont le contexte à obtenir est obtenu.
Renvoie
Pointeur de contexte associé à aListener.

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Récupère l'instance otInstance associée à aListener lors de l'initialisation.

Détails
Paramètres
[in] aListener
Écouteur TCP dont l'instance doit être obtenue.
Renvoie
Pointeur otInstance associé à aListener.

otTcpListenerInitialize

otError otTcpListenerInitialize(
  otInstance *aInstance,
  otTcpListener *aListener,
  const otTcpListenerInitializeArgs *aArgs
)

Initialise un écouteur TCP.

En appelant cette fonction, OpenThread peut suivre l'écouteur TCP et stocker et récupérer les données TCP dans aListener. L'application ne doit pas accéder directement aux champs de aListener ni les modifier. Si l'application doit récupérer la mémoire de sauvegarde aListener, elle doit appeler otTcpListenerDeinitialize().

Détails
Paramètres
[in] aInstance
Un pointeur vers une instance OpenThread.
[in] aListener
Pointeur vers une structure d'écouteur TCP.
[in] aArgs
Pointeur vers une structure d'arguments.
Valeurs de retour
OT_ERROR_NONE
L'écouteur TCP a bien été ouvert.
OT_ERROR_FAILED
Échec de l'ouverture de l'écouteur TCP.

otTcpReceiveByReference

otError otTcpReceiveByReference(
  otTcpEndpoint *aEndpoint,
  const otLinkedBuffer **aBuffer
)

Fournit à l'application une chaîne de tampon associée qui fait référence aux données actuellement dans le tampon de réception TCP.

La chaîne de tampon associée reste valide jusqu'à l'appel suivant du rappel "receive ready" (réception prête) ou jusqu'au prochain appel à otTcpReceiveContiguify() ou otTcpCommitReceive().

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP représentant le point de terminaison TCP sur lequel recevoir des données.
[out] aBuffer
Pointeur vers la chaîne de tampon associée qui référence les données actuellement dans le tampon de réception.
Valeurs de retour
OT_ERROR_NONE
L'opération a bien été effectuée.
OT_ERROR_FAILED
Échec de l'opération.

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

Réorganise le tampon de réception pour qu'il soit entièrement contigu en mémoire.

Cette étape est facultative. Une application peut simplement parcourir la chaîne de tampon associée obtenue en appelant otTcpReceiveByReference. Certaines applications peuvent appeler cette fonction pour que le tampon de réception soit contigu afin de simplifier le traitement des données, mais au détriment du temps CPU nécessaire à la réorganisation des données dans le tampon de réception.

Détails
Paramètres
[in] aEndpoint
Pointeur vers le point de terminaison TCP dont le tampon de réception doit être réorganisé.
Valeurs de retour
OT_ERROR_NONE
L'opération a bien été effectuée.
OT_ERROR_FAILED
Échec de l'opération.

otTcpSendByExtension

otError otTcpSendByExtension(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Ajoute des données au tampon d'envoi en prolongeant la longueur de l'élément otLinkedBuffer final dans le tampon d'envoi selon la quantité spécifiée.

Si le tampon d'envoi est vide, l'opération échoue.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP représentant le point de terminaison TCP sur lequel envoyer des données.
[in] aNumBytes
Nombre d'octets par lesquels étendre la longueur du tampon associé final.
[in] aFlags
Indicateurs spécifiant les options pour cette opération (voir l'énumération ci-dessus).
Valeurs de retour
OT_ERROR_NONE
Les données ont bien été ajoutées au tampon d'envoi.
OT_ERROR_FAILED
Échec de l'ajout de données au tampon d'envoi.

otTcpSendByReference

otError otTcpSendByReference(
  otTcpEndpoint *aEndpoint,
  otLinkedBuffer *aBuffer,
  uint32_t aFlags
)

Ajoute au tampon d'envoi les données référencées par le tampon associé pointé par aBuffer.

Lors d'un appel réussi à cette fonction, le tampon associé et les données auxquelles il fait référence appartiennent à la pile TCP. Ils ne doivent pas être modifiés par l'application tant qu'un rappel d'envoi terminé n'a pas renvoyé la propriété de ces objets à l'application. Il est possible d'appeler cette fonction pour ajouter un autre tampon associé à la file d'attente d'envoi, même si le rappel "send complete" (envoi terminé) pour un appel précédent de cette fonction n'a pas encore été déclenché.

Notez que aBuffer ne doit pas être enchaîné. Son champ mNext doit être NULL. Si des données supplémentaires sont ajoutées juste après cet appel, l'indicateur OT_TCP_SEND_MORE_TO_COME doit être utilisé comme une indication sur l'implémentation TCP.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP représentant le point de terminaison TCP sur lequel envoyer des données.
[in] aBuffer
Pointeur vers la chaîne de tampon associée qui référence les données à ajouter au tampon d'envoi.
[in] aFlags
Indicateurs spécifiant les options pour cette opération (voir l'énumération ci-dessus).
Valeurs de retour
OT_ERROR_NONE
Les données ont bien été ajoutées au tampon d'envoi.
OT_ERROR_FAILED
Échec de l'ajout de données au tampon d'envoi.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Informe le pair de connexion que ce point de terminaison TCP n'enverra plus de données.

Utilisez cette option lorsque l'application n'a plus de données à envoyer au pair de connexion. Pour cette connexion, les futures lectures sur le pair de connexion entraîneront la condition de "fin du flux", et les futures écritures sur ce point de terminaison échoueront.

La condition de "fin de flux" ne s'applique qu'une fois que le pair de connexion a reçu les données précédemment fournies à la pile TCP à envoyer.

Détails
Paramètres
[in] aEndpoint
Pointeur vers la structure du point de terminaison TCP représentant le point de terminaison TCP à arrêter.
Valeurs de retour
OT_ERROR_NONE
Mise en file d'attente de la condition de "fin de flux" pour transmission.
OT_ERROR_FAILED
Échec de la mise en file d'attente de la condition de "fin de flux" pour transmission.

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

Entraîne l'arrêt de l'écoute des connexions entrantes par cet écouteur TCP.

Détails
Paramètres
[in] aListener
Pointeur vers la structure d'écouteur TCP qui doit arrêter d'écouter.
Valeurs de retour
OT_ERROR_NONE
L'écoute sur l'écouteur TCP a bien été arrêtée.
OT_ERROR_FAILED
Échec de l'arrêt de l'écoute sur l'écouteur TCP.

Macros

OT_TCP_ENDPOINT_TCB_NUM_PTR

 OT_TCP_ENDPOINT_TCB_NUM_PTR 36

OT_TCP_ENDPOINT_TCB_SIZE_BASE

 OT_TCP_ENDPOINT_TCB_SIZE_BASE 392

OT_TCP_ENDPOINT_TCB_SIZE_BASE et OT_TCP_ENDPOINT_TCB_NUM_POINTERS sont choisis de sorte que le champ mTcb d'otTcpEndpoint ait la même taille que la structure tcpcb dans TCPlp.

Cette opération est nécessaire, car le champ mTcb, bien qu'opaque dans sa déclaration, est traité comme struct tcpcb dans l'implémentation TCP.

OT_TCP_LISTENER_TCB_NUM_PTR

 OT_TCP_LISTENER_TCB_NUM_PTR 3

OT_TCP_LISTENER_TCB_SIZE_BASE

 OT_TCP_LISTENER_TCB_SIZE_BASE 16

OT_TCP_LISTENER_TCB_SIZE_BASE et OT_TCP_LISTENER_TCB_NUM_POINTERS sont choisis de sorte que le champ mTcbListener d'otTcpListener ait la même taille que le struct tcpcb_listen dans TCPlp.

Cette opération est nécessaire, car le champ mTcbListen, bien qu'opaque dans sa déclaration, est traité comme struct tcpcb dans l'implémentation TCP.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

Taille de mémoire tampon recommandée pour les connexions TCP qui traversent environ trois sauts sans fil ou moins.

Sur les plates-formes où la mémoire est particulièrement limitée et dans les situations où une bande passante élevée n'est pas nécessaire, il peut être souhaitable de sélectionner manuellement une taille de mémoire tampon inférieure.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

Taille de mémoire tampon recommandée pour les connexions TCP qui passent par de nombreux sauts sans fil.

Si la connexion TCP traverse un très grand nombre de sauts (plus de six), il peut être conseillé de sélectionner manuellement une grande taille de mémoire tampon.

Ressources

Les sujets de référence de l'API OpenThread proviennent du code source, disponible sur GitHub. Pour en savoir plus ou pour contribuer à notre documentation, consultez la section Ressources.