TCP
En este módulo, se incluyen funciones que controlan la comunicación TCP.
Resumen
Enumeraciones |
|
---|---|
anonymous enum
|
enum Define las marcas que se pasan a otTcpConnect(). |
anonymous enum
|
enum Define las marcas que se pasan a otTcpSendByReference . |
otTcpDisconnectedReason
|
enum |
otTcpIncomingConnectionAction{
|
enum Define las acciones de conexión entrantes. |
Typedefs |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
Una estructura de búfer vinculada para usar con TCP. |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
Esta devolución de llamada indica que la conexión TCP ahora está lista para la comunicación bidireccional. |
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
|
typedef Esta devolución de llamada indica que se llegó una conexión entrante que coincide con este objeto de escucha de TCP. |
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
|
typedefvoid(*
Esta devolución de llamada indica que la conexión no funciona y que ya no debe usarse, o que una conexión entró en el estado TIME-WAIT. |
otTcpDisconnectedReason
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
Contiene argumentos para la función otTcpEndpointInitialize(). |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
Esta devolución de llamada informa a la aplicación que el protocolo de enlace de 3 vías del TCP está completo y que la conexión ahora está establecida. |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
typedefvoid(*
Esta devolución de llamada informa a la aplicación si se realizó un progreso en la transferencia de datos del búfer de envío al destinatario. |
otTcpIncomingConnectionAction
|
typedef Define las acciones de conexión entrantes. |
otTcpListener
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
Contiene argumentos para la función otTcpListenerInitialize(). |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
Esta devolución de llamada indica la cantidad de bytes disponibles para el consumo desde el búfer de recepción. |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
Esta devolución de llamada informa a la aplicación que el par de conexión confirmó los datos en el aData proporcionado y que la aplicación puede reclamar aData y los datos que contiene. |
remotas |
|
---|---|
otTcpAbort(otTcpEndpoint *aEndpoint)
|
Finaliza de manera forzosa la conexión TCP asociada con este extremo TCP.
|
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
|
Vincula el extremo TCP a un puerto y una dirección IP.
|
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Informa a la pila de TCP que la aplicación terminó de procesar
aNumBytes bytes de datos al comienzo del búfer de recepción y que no es necesario que la pila de TCP continúe manteniendo esos bytes en el búfer de recepción. |
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
|
Registra el host y el puerto remotos para esta conexión.
|
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
|
Anula la inicialización de este extremo de TCP.
|
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
|
void *
Obtiene el puntero de contexto que se asoció con
aEndpoint cuando se inicializa. |
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
|
Obtiene la otInstance asociada con
aEndpoint cuando se inicializa. |
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
|
Inicializa un extremo de TCP.
|
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Obtiene un puntero al host y el puerto locales de un extremo de TCP.
|
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Obtiene un puntero al host y el puerto de un extremo de TCP.
|
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
|
Hace que las conexiones TCP entrantes que coincidan con la dirección IP y el puerto especificados activen las devoluciones de llamada de este objeto de escucha de TCP.
|
otTcpListenerDeinitialize(otTcpListener *aListener)
|
Anula la inicialización de este objeto de escucha de TCP.
|
otTcpListenerGetContext(otTcpListener *aListener)
|
void *
Obtiene el puntero de contexto que se asoció con
aListener cuando se inicializa. |
otTcpListenerGetInstance(otTcpListener *aListener)
|
Obtiene la otInstance asociada con
aListener cuando se inicializa. |
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
|
Inicializa un objeto de escucha de TCP.
|
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
|
Proporciona a la aplicación una cadena de búferes vinculada que hace referencia a datos que se encuentran actualmente en el búfer de recepción de TCP.
|
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
|
Reorganiza el búfer de recepción para que sea completamente contiguo en la memoria.
|
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Agrega datos al búfer de envío extendiendo la longitud del otLinkedBuffer final en la cantidad especificada.
|
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
|
Agrega al búfer de envío los datos a los que hace referencia el búfer vinculado al que hace referencia
aBuffer . |
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
|
Informa al par de conexión que este extremo TCP no enviará más datos.
|
otTcpStopListening(otTcpListener *aListener)
|
Hace que este objeto de escucha de TCP deje de escuchar conexiones entrantes.
|
Structs |
|
---|---|
otLinkedBuffer |
Una estructura de búfer vinculada para usar con TCP. |
otTcpEndpoint |
Representa un extremo de TCP. |
otTcpEndpointInitializeArgs |
Contiene argumentos para la función otTcpEndpointInitialize(). |
otTcpListener |
Representa un objeto de escucha de TCP. |
otTcpListenerInitializeArgs |
Contiene argumentos para la función otTcpListenerInitialize(). |
Enumeraciones
enumeración anónima
anonymous enum
Define las marcas que se pasan a otTcpSendByReference
.
otTcpDisconnectedReason
otTcpDisconnectedReason
otTcpIncomingConnectionAction
otTcpIncomingConnectionAction
Define las acciones de conexión entrantes.
Se usa en la devolución de llamada otTcpAcceptReady().
Propiedades | |
---|---|
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT
|
Acepta la conexión entrante. |
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER
|
Aplaza (ignora silenciosamente) la conexión entrante. |
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
|
Rechaza la conexión entrante. |
Typedefs
otLinkedBuffer
struct otLinkedBuffer otLinkedBuffer
Una estructura de búfer vinculada para usar con TCP.
Una sola estructura otLinkedBuffer hace referencia a un arreglo de bytes en la memoria mediante mData y mLength. El campo mNext se usa para formar una cadena de estructuras otLinkedBuffer.
otTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
Esta devolución de llamada indica que la conexión TCP ahora está lista para la comunicación bidireccional.
En el caso de TCP Fast Open, esto puede ser antes de que el protocolo de enlace de conexión TCP se haya completado. La aplicación recibe los punteros de contexto para el objeto de escucha de TCP que aceptó la conexión y el extremo de TCP en el que se aceptó. El contexto proporcionado es el que está asociado con el objeto de escucha de TCP.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
otTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
Esta devolución de llamada indica que se llegó una conexión entrante que coincide con este objeto de escucha de TCP.
La respuesta típica es que la aplicación acepte la conexión entrante. Para ello, se propaga aAcceptInto
con un puntero al otTcpEndpoint en el que se acepta la conexión entrante. Este otTcpEndpoint ya se debe inicializar con otTcpEndpointInitialize(). Luego, la aplicación muestra OT_TCP_INCOMING_CONNECTION_ACTION_ACE.
Como alternativa, la aplicación puede rechazar la conexión entrante. La aplicación puede hacerlo de dos maneras. Primero, si la aplicación muestra OT_TCP_INCOMING_CONNECT_ACTION_DEFER, OpenThread ignora de manera silenciosa la solicitud de establecimiento de la conexión. Es probable que el par de conexión retransmita la solicitud y, en ese momento, se volverá a llamar a la devolución de llamada. Esto es útil si los recursos no están disponibles actualmente para aceptar la conexión, pero pueden estarlo cuando el par de conexión retransmite su intento de establecimiento de la conexión. En segundo lugar, si la aplicación muestra OT_TCP_INCOMING_CONNECT_ACTION_REFUSE, OpenThread envía un mensaje de “conexión rechazada” al host que intentó establecer una conexión. Si la aplicación rechaza la conexión entrante, no es necesario propagar aAcceptInto
.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Qué muestra |
Descripción de cómo manejar la conexión entrante.
|
otTcpDisconnected
void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
Esta devolución de llamada indica que la conexión no funciona y que ya no debe usarse, o que una conexión entró en el estado TIME-WAIT.
Puede ocurrir si falla un intento de establecimiento de conexión (iniciado mediante una llamada a otTcpConnect()) o cualquier punto posterior (p.ej., si se agota el tiempo de espera de la conexión o se recibe un segmento RST del par de conexión). Una vez que se activa esta devolución de llamada, se pueden reclamar todos los recursos que la aplicación proporcionó para esta conexión (es decir, cualquier otLinkedBuffers
y memoria a la que hagan referencia, pero no el extremo TCP ni el espacio para los búferes receptores). En el caso de una conexión que ingresa en el estado TIME-WAIT, se llama a esta devolución de llamada dos veces, una vez al entrar en el estado TIME-WAIT (con OT_TCP_DISCONNECTED_REASON_TIME_WAIT y nuevamente cuando vence el estado TIME-WAIT (con OT_TCP_DISCONNECTED_REASON_NORMAL).
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
otTcpDisconnectedReason
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcpEndpoint
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
Contiene argumentos para la función otTcpEndpointInitialize().
otTcpEstablished
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
Esta devolución de llamada informa a la aplicación que el protocolo de enlace de 3 vías del TCP está completo y que la conexión ahora está establecida.
Detalles | |||
---|---|---|---|
Parámetros |
|
otTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
Esta devolución de llamada informa a la aplicación si se realizó un progreso en la transferencia de datos del búfer de envío al destinatario.
Esta devolución de llamada no es necesaria para la operación de TCP correcta. La mayoría de las aplicaciones pueden simplemente depender de la devolución de llamada otTcpSendDone() para reclamar los búferes vinculados una vez que la pila de TCP termina de usarlos. El objetivo de esta devolución de llamada es admitir aplicaciones avanzadas que se benefician de información más detallada sobre cómo la conexión avanza en la transferencia de datos al par de conexión.
La operación de esta devolución de llamada está estrechamente vinculada al búfer de envío de TCP. Se puede interpretar que el búfer de envío tiene dos regiones. Primero, está la región “en tránsito” en la parte principal (delante) del búfer de envío. Corresponde a los datos que se enviaron al destinatario, pero que aún no se confirmaron. En segundo lugar, está la región de "Tareas pendientes", que consiste en todos los datos del búfer de envío que no están en la región "en tránsito". La región de “Tareas pendientes” corresponde a los datos que están en cola para el envío, pero que aún no se han enviado.
La devolución de llamada se invoca en respuesta a dos tipos de eventos. Primero, la región “en tránsito” del búfer de envío puede reducirse (p.ej., cuando el destinatario reconoce los datos que enviamos antes). En segundo lugar, la región de "atraso" del búfer de envío puede reducirse (p.ej., se enviaron datos nuevos). Estas dos condiciones a menudo ocurren al mismo tiempo, en respuesta a un segmento ACK del par de conexión, por lo que se combinan en una sola devolución de llamada.
La pila de TCP solo usa los bytes aInSendBuffer
al final del búfer de envío. Cuando aInSendBuffer
disminuye en un valor x, significa que x bytes adicionales que antes estaban al principio del búfer de envío ya no forman parte del búfer de envío y ahora la aplicación puede recuperarlos (es decir, reemplazarlos). Ten en cuenta que la propia estructura otLinkedBuffer solo se puede reclamar una vez que todos los bytes a los que hace referencia ya no forman parte del búfer de envío.
Esta devolución de llamada incluye otTcpSendDone(), en el siguiente sentido: las aplicaciones pueden determinar cuándo se pueden reclamar los búferes vinculados comparando aInSendBuffer
con la cantidad de bytes que hay en cada búfer vinculado. Sin embargo, esperamos que otTcpSendDone(), que indica directamente qué otLinkedBuffers se pueden reclamar, sea mucho más fácil de usar. Si se registran ambas devoluciones de llamada y se activan por el mismo evento (p.ej., si se recibió el mismo segmento de ACK), primero se activará la devolución de llamada otTcpSendDone() y, luego, esta devolución de llamada.
Además, esta devolución de llamada proporciona aBacklog
, que indica cuántos bytes de datos en el búfer de envío aún no están en tránsito. En el caso de las aplicaciones que solo desean agregar datos al búfer de envío cuando hay una garantía de que se enviarán pronto, puede ser conveniente enviar datos solo cuando aBacklog
sea lo suficientemente pequeño (0 o cerca de 0). Por ejemplo, una aplicación puede usar aBacklog
de modo que pueda reaccionar a la acumulación de colas si descarta o agrega datos para evitar crear una acumulación de datos.
Después de una llamada a otTcpSendByReference() o a otTcpSendByExtension() con un número positivo de bytes, se garantiza que se llamará a la devolución de llamada otTcpForwardProgress() para indicar cuándo se envían los bytes que se agregaron al búfer de envío. La llamada a otTcpForwardProgress() se puede realizar inmediatamente después de que los bytes se agregan al búfer de envío (si algunos de esos bytes se envían de inmediato, lo que reduce el trabajo pendiente) o en algún momento en el futuro (una vez que la conexión envía algunos o todos los datos, lo que reduce el trabajo pendiente). Con "inmediatamente", nos referimos a que la devolución de llamada se programa de inmediato para ejecutarse en un tasklet. A fin de evitar la complejidad relacionada con la reentrancia, nunca se llama directamente a la devolución de llamada otTcpForwardProgress()
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
otTcpIncomingConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
Define las acciones de conexión entrantes.
Se usa en la devolución de llamada otTcpAcceptReady().
otTcpListener
struct otTcpListener otTcpListener
otTcpListenerInitializeArgs
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
Contiene argumentos para la función otTcpListenerInitialize().
otTcpReceiveAvailable
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
Esta devolución de llamada indica la cantidad de bytes disponibles para el consumo desde el búfer de recepción.
Se llama cada vez que se agregan bytes al búfer de recepción y cuando se alcanza el final de la transmisión. Si se alcanzó el final de la transmisión (es decir, si no habrá más datos disponibles para leer porque el par de conexión cerró su extremo de la conexión para la escritura), aEndOfStream
es verdadero. Por último, aBytesRemaining
indica cuánta capacidad queda en el búfer de recepción para contener los datos adicionales que lleguen.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
Esta devolución de llamada informa a la aplicación que el par de conexión confirmó los datos en el aData
proporcionado y que la aplicación puede reclamar aData
y los datos que contiene.
Se garantiza que los aData
son idénticos a los que se pasan a TCP mediante otTcpSendByReference(), incluidas las extensiones que se aplican mediante otTcpSendByExtension().
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
remotas
otTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
Finaliza de manera forzosa la conexión TCP asociada con este extremo TCP.
Esto hace que el extremo TCP sea libre para usar en otra conexión y vacía los búferes de envío y recepción, lo que transfiere la propiedad de cualquier dato proporcionado por la aplicación en las llamadas otTcpSendByReference() y otTcpSendByExtension(). Las devoluciones de llamada y la memoria del extremo de TCP para el búfer de recepción permanecen asociadas con el extremo de TCP.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
Vincula el extremo TCP a un puerto y una dirección IP.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpCommitReceive
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Informa a la pila de TCP que la aplicación terminó de procesar aNumBytes
bytes de datos al comienzo del búfer de recepción y que no es necesario que la pila de TCP continúe manteniendo esos bytes en el búfer de recepción.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otTcpConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
Registra el host y el puerto remotos para esta conexión.
TCP Fast Open se debe habilitar o inhabilitar con aFlags
. Si está inhabilitado, el protocolo de enlace de establecimiento de la conexión TCP se inicia de inmediato. Si está habilitada, esta función solo registra el host y el puerto remotos, y el protocolo de enlace de establecimiento de la conexión TCP solo ocurre en la primera llamada a otTcpSendByReference()
.
Si la opción Apertura rápida de TCP está inhabilitada, el emisor debe esperar la devolución de llamada otTcpEstablished
que indique que se completó el protocolo de enlace de establecimiento de la conexión TCP antes de que pueda comenzar a enviar datos, p.ej., llamando a otTcpSendByReference()
.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otTcpEndpointDeinitialize
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
Anula la inicialización de este extremo de TCP.
Esto significa que OpenThread ya no realiza un seguimiento de este extremo TCP y desasigna todos los recursos que asignó internamente para este extremo TCP. La aplicación puede volver a usar la memoria que respalda el extremo TCP como considere adecuado.
Si corresponde a una conexión TCP activa, la conexión se finaliza de forma inceremoniosa (como en otTcpAbort()). Todos los recursos que la aplicación proporcionó para este extremo TCP (búferes vinculados para el búfer de envío, memoria para el búfer receptor, la propia estructura aEndpoint
, etc.) se devuelven de inmediato a la aplicación.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
Obtiene el puntero de contexto que se asoció con aEndpoint
cuando se inicializa.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El puntero de contexto asociado con
aEndpoint . |
otTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
Obtiene la otInstance asociada con aEndpoint
cuando se inicializa.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El puntero otInstance asociado con
aEndpoint . |
otTcpEndpointInitialize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
Inicializa un extremo de TCP.
Llamar a esta función hace que OpenThread realice un seguimiento del extremo TCP y almacene y recupere datos de TCP dentro de aEndpoint
. La aplicación debe abstenerse de acceder directamente a los campos de aEndpoint
o modificarlos. Si la aplicación necesita reclamar el aEndpoint
de copia de seguridad de la memoria, debe llamar a otTcpEndpointDeinitialize().
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
Obtiene un puntero al host y el puerto locales de un extremo de TCP.
Es posible que el contenido del host y del puerto esté inactivo si este socket no está conectado y no se vinculó después de la última vez que se desconectó.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El host local y el puerto de
aEndpoint . |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
Obtiene un puntero al host y el puerto de un extremo de TCP.
El contenido del host y del puerto puede estar inactivo si este socket no está conectado.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El host y el puerto del par de conexión de
aEndpoint . |
otTcpListen
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
Hace que las conexiones TCP entrantes que coincidan con la dirección IP y el puerto especificados activen las devoluciones de llamada de este objeto de escucha de TCP.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpListenerDeinitialize
otError otTcpListenerDeinitialize( otTcpListener *aListener )
Anula la inicialización de este objeto de escucha de TCP.
Esto significa que OpenThread ya no realiza un seguimiento de este objeto de escucha de TCP y desasigna todos los recursos que asignó internamente para este objeto de escucha de TCP. La aplicación puede volver a usar la memoria que respalda el objeto de escucha de TCP como considere adecuado.
Si el objeto de escucha de TCP está escuchando, deja de escuchar.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
Obtiene el puntero de contexto que se asoció con aListener
cuando se inicializa.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El puntero de contexto asociado con
aListener . |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
Obtiene la otInstance asociada con aListener
cuando se inicializa.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
El puntero otInstance asociado con
aListener . |
otTcpListenerInitialize
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
Inicializa un objeto de escucha de TCP.
Llamar a esta función hace que OpenThread realice un seguimiento del objeto de escucha de TCP y almacene y recupere datos de TCP en aListener
. La aplicación debe abstenerse de acceder directamente a los campos de aListener
o modificarlos. Si la aplicación necesita reclamar el aListener
de copia de seguridad de la memoria, debe llamar a otTcpListenerDeinitialize().
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otTcpReceiveByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
Proporciona a la aplicación una cadena de búferes vinculada que hace referencia a datos que se encuentran actualmente en el búfer de recepción de TCP.
La cadena de búfer vinculada es válida hasta que se invoque la devolución de llamada "Recibir lista" o hasta la próxima llamada a otTcpReceiveContiguify() o otTcpCommitReceive().
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpReceiveContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
Reorganiza el búfer de recepción para que sea completamente contiguo en la memoria.
Esto es opcional; una aplicación puede simplemente atravesar la cadena de búfer vinculada que se obtiene llamando a otTcpReceiveByReference
. Es posible que algunas aplicaciones quieran llamar a esta función para hacer que el búfer de recepción sea contiguo y así simplificar su procesamiento de datos, pero esto a expensas del tiempo de CPU para reorganizar los datos en el búfer receptor.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Agrega datos al búfer de envío extendiendo la longitud del otLinkedBuffer final en la cantidad especificada.
Si el búfer de envío está vacío, la operación falla.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
Agrega al búfer de envío los datos a los que hace referencia el búfer vinculado al que hace referencia aBuffer
.
Si se realiza una llamada exitosa a esta función, el búfer vinculado y los datos a los que hace referencia son propiedad de la pila de TCP. La aplicación no debe modificarlos hasta que una devolución de llamada de envío listo le devuelva la propiedad de esos objetos a la aplicación. Es aceptable llamar a esta función para agregar otro búfer vinculado a la cola de envío, incluso si aún no se ha activado la devolución de llamada "send done" para una invocación previa de esta función.
Ten en cuenta que aBuffer
no se debe encadenar; su campo mNext debe ser NULL. Si se agregarán datos adicionales inmediatamente después de esta llamada, se debe usar la marca OT_TCP_SEND_MORE_TO_COME como sugerencia para la implementación de TCP.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
otTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
Informa al par de conexión que este extremo TCP no enviará más datos.
Se debe usar cuando la aplicación no tiene más datos para enviar al par de conexión. Para esta conexión, las lecturas futuras del par de conexión generarán la condición “fin de la transmisión”, y las escrituras futuras en este extremo de conexión fallarán.
La condición de “fin de la transmisión” solo se aplica después de que el par de conexión haya recibido los datos proporcionados previamente a la pila de TCP para enviar.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
otTcpStopListening
otError otTcpStopListening( otTcpListener *aListener )
Hace que este objeto de escucha de TCP deje de escuchar conexiones entrantes.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
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 y OT_TCP_ENDPOINT_TCB_NUM_POINTERS se eligen de modo que el campo mTcb de otTcpEndpoint tiene el mismo tamaño que struct tcpcb en TCPlp.
Esto es necesario porque el campo mTcb, aunque opaco en su declaración, se trata como struct tcpcb en la implementación de 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 y OT_TCP_LISTENER_TCB_NUM_POINTERS se eligen de modo que el campo mTcbListener de otTcpListener tenga el mismo tamaño que la estructura tcpcb_listen en TCPlp.
Esto es necesario porque el campo mTcbEscuchar, aunque es opaco en su declaración, se trata como struct tcpcb en la implementación de TCP.
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598
Tamaño de búfer recomendado para conexiones TCP que recorren alrededor de 3 saltos inalámbricos o menos.
En plataformas donde la memoria es particularmente limitada y en situaciones en las que no se necesita un ancho de banda alto, puede ser conveniente seleccionar manualmente un tamaño de búfer más pequeño.
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157
Tamaño de búfer recomendado para conexiones TCP que recorren muchos saltos inalámbricos.
Si la conexión TCP recorre una gran cantidad de saltos (aproximadamente, más de 6), puede ser recomendable seleccionar un tamaño de búfer grande de forma manual.
Recursos
Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o contribuir a nuestra documentación, consulta Recursos.