nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Los objetos de esta clase representan extremos de transporte de TCP.
Resumen
La capa de Inet de Nest encapsula métodos para interactuar con extremos de transporte de TCP (sockets SOCK_STREAM en Linux y sistemas derivados de BSD) o bloques de control del protocolo LwIP TCP, ya que el sistema se configura de manera correspondiente.
Herencia
Se hereda de: nl::Inet::EndPointBasis
Tipos públicos |
|
---|---|
@10{
|
enum Estado dinámico básico del extremo subyacente. |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de función de manejo de eventos de errores de aceptación de conexión. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de función de control de eventos de establecimiento de conexión. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de función de control de eventos de establecimiento de conexión. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
Tipo de función de manejo de eventos recibidos de conexión. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
Tipo de función de manejo de eventos de recepción de datos. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
Tipo de función de manejo de eventos de transmisión de datos. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
Tipo de función de control de eventos de recepción de cierre parcial. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
El tipo de TCP SendIdle cambió la función de manejo de indicadores. |
Atributos públicos |
|
---|---|
OnAcceptError
|
Es el delegado de la función que controla el evento de aceptación de conexión del extremo.
|
OnConnectComplete
|
El delegado de la función de control de eventos de establecimiento de conexión del extremo.
|
OnConnectionClosed
|
El delegado de la función de control de eventos de cierre del extremo
|
OnConnectionReceived
|
La conexión del extremo recibe el delegado de la función de control de eventos.
|
OnDataReceived
|
El delegado de la función que controla la recepción de eventos de texto de mensajes del extremo
|
OnDataSent
|
El delegado de la función de control de eventos de transmisión de texto del mensaje del extremo.
|
OnPeerClose
|
El delegado de la función de control de eventos de recepción de cierre parcial del extremo
|
OnTCPSendIdleChanged
|
El delegado de la función que controla los eventos del extremo que indica cuando cambia la inactividad del canal de envío de la conexión TCP.
|
ReceiveEnabled
|
bool
Interruptor de control que indica si la aplicación está recibiendo datos.
|
State
|
enum nl::Inet::TCPEndPoint::@10
Estado dinámico básico del extremo subyacente.
|
Funciones públicas |
|
---|---|
Abort(void)
|
void
Cerrar de forma anticipada el extremo, es decir, enviar paquetes RST.
|
AckReceive(uint16_t len)
|
Confirma la recepción del texto del mensaje.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Vincular el extremo a una dirección IP de interfaz
|
Close(void)
|
Inicia el cierre completo de TCP; en otras palabras, finaliza con el envío y la recepción.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Inicia una conexión TCP.
|
DisableKeepAlive(void)
|
Inhabilita el “keep-alive” de TCP de 12 a 1 con la nueva opción de compresión.
|
DisableReceive(void)
|
void
Inhabilitar recepción
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Habilita el “keep-alive” del TCP de 12 a 1 con la nueva opción de compresión.
|
EnableNoDelay(void)
|
HabilitarNoDelay.
|
EnableReceive(void)
|
void
Habilitar recepción
|
Free(void)
|
void
Inicia (o continúa) el cierre completo de TCP e ignora los errores.
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
Extrae la dirección IP y el puerto TCP del extremo local.
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
Extrae la dirección IP y el puerto TCP del extremo remoto.
|
IsConnected(void) const
|
bool
Extrae si se estableció la conexión TCP.
|
Listen(uint16_t backlog)
|
Prepara el extremo para recibir mensajes de TCP.
|
LogId(void)
|
uint16_t
Obtén un identificador para el extremo.
|
MarkActive(void)
|
void
Ten en cuenta la actividad, en otras palabras, que restableces el temporizador de inactividad.
|
PendingReceiveLength(void)
|
uint32_t
Extrae la longitud de los datos de recepción no confirmados.
|
PendingSendLength(void)
|
uint32_t
Extrae la longitud de los datos que esperan la primera transmisión.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Envía el texto del mensaje al encabezado de la cola de recepción.
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Envía texto del mensaje con la conexión TCP.
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Establece el tiempo de espera para que Connect se ejecute correctamente o muestre un error.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Establece la opción de socket TCP_USER_TIMEOUT.
|
Shutdown(void)
|
Inicie el cierre parcial del TCP, en otras palabras, finalice con el envío.
|
Tipos públicos
@10
@10
Estado dinámico básico del extremo subyacente.
Los objetos se inicializan como “listos”. avanza a los estados subsiguientes correspondientes a una simplificación de los estados de la máquina de estado de transporte del TCP.
Nota: La enumeración de estado kBasisState_Closed
se asigna a kState_Ready
por motivos históricos de compatibilidad binaria. El kState_Closed
existente existe para identificar por separado la distinción entre "todavía no está abierto" y "que antes estaban abiertas ahora
cerrado" que existían anteriormente en los estados kState_Ready
y kState_Closed
.
Propiedades | |
---|---|
kState_Bound
|
Vinculado al extremo, pero sin escucha |
kState_Closed
|
Se cerró el extremo y está listo para el lanzamiento. |
kState_Closing
|
Extremo que se cierra de forma bidireccional |
kState_Connected
|
Se conectó el extremo, listo para recibir un mensaje de texto o recibir llamadas. |
kState_Connecting
|
El extremo intenta conectarse. |
kState_Listening
|
Extremo que recibe conexiones. |
kState_Ready
|
Se inicializó el extremo, pero no se vinculó. |
kState_ReceiveShutdown
|
El endpoint respondió al cierre parcial. |
kState_SendShutdown
|
El extremo inició su cierre parcial. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de función de manejo de eventos de errores de aceptación de conexión.
Proporciona una función de este tipo al miembro delegado de OnAcceptError
para procesar los eventos de error de aceptación de conexión en endPoint
. El argumento err
proporciona detalles específicos sobre el tipo de error.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de función de control de eventos de establecimiento de conexión.
Proporciona una función de este tipo al miembro delegado OnConnectComplete
para procesar los eventos de establecimiento de conexión en endPoint
. El argumento err
distingue entre conexiones exitosas y fallas.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de función de control de eventos de establecimiento de conexión.
Proporciona una función de este tipo al miembro delegado OnConnectionClosed
para procesar los eventos de finalización de conexión en endPoint
. El argumento err
distingue las terminaciones correctas de las fallas.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Tipo de función de manejo de eventos recibidos de conexión.
Proporciona una función de este tipo al miembro delegado OnConnectionReceived
para procesar los eventos de recepción de conexión en listeningEndPoint
. El extremo recién recibido conEndPoint
se encuentra en la dirección IP peerAddr
y el puerto TCP peerPort
.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
Tipo de función de manejo de eventos de recepción de datos.
Proporciona una función de este tipo al miembro delegado de OnDataReceived
para que procese eventos de recepción de datos en endPoint
, donde data
es el texto del mensaje recibido.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Un controlador de eventos de recepción de datos debe confirmar los datos procesados con el método AckReceive
. El método Free
en el búfer de datos también debe invocarse, a menos que se use PutBackReceivedData
en su lugar.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Tipo de función de manejo de eventos de transmisión de datos.
Proporciona una función de este tipo al miembro delegado OnDataSent
para procesar eventos de transmisión de datos en endPoint
, en la que len
es la longitud del texto del mensaje agregado a la ventana de transmisión de TCP, que es apta para el envío a través de la pila de red subyacente.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Tipo de función de control de eventos de recepción de cierre parcial.
Proporciona una función de este tipo al miembro delegado OnPeerClose
para procesar los eventos de finalización de conexión en endPoint
.
Detalles | |||
---|---|---|---|
Parámetros |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
El tipo de TCP SendIdle cambió la función de manejo de indicadores.
Proporciona una función de este tipo al miembro delegado OnTCPSendIdleChanged
para procesar el evento del canal de envío del TCPEndPoint que cambia el estado entre inactivo y no inactivo.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Atributos públicos
OnAcceptError
OnAcceptErrorFunct OnAcceptError
Es el delegado de la función que controla el evento de aceptación de conexión del extremo.
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
El delegado de la función de control de eventos de establecimiento de conexión del extremo.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
El delegado de la función de control de eventos de cierre del extremo
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
La conexión del extremo recibe el delegado de la función de control de eventos.
OnDataReceived
OnDataReceivedFunct OnDataReceived
El delegado de la función que controla la recepción de eventos de texto de mensajes del extremo
OnDataSent
OnDataSentFunct OnDataSent
El delegado de la función de control de eventos de transmisión de texto del mensaje del extremo.
OnPeerClose
OnPeerCloseFunct OnPeerClose
El delegado de la función de control de eventos de recepción de cierre parcial del extremo
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
El delegado de la función que controla los eventos del extremo que indica cuando cambia la inactividad del canal de envío de la conexión TCP.
Las capas superiores utilizan esta función para tomar las medidas adecuadas en función de si los datos enviados se entregaron de forma confiable al par.
ReceiveEnabled
bool ReceiveEnabled
Interruptor de control que indica si la aplicación está recibiendo datos.
Estado
enum nl::Inet::TCPEndPoint::@10 State
Estado dinámico básico del extremo subyacente.
Los objetos se inicializan como “listos”. avanza a los estados subsiguientes correspondientes a una simplificación de los estados de la máquina de estado de transporte del TCP.
Nota: La enumeración de estado kBasisState_Closed
se asigna a kState_Ready
por motivos históricos de compatibilidad binaria. El kState_Closed
existente existe para identificar por separado la distinción entre "todavía no está abierto" y "que antes estaban abiertas ahora
cerrado" que existían anteriormente en los estados kState_Ready
y kState_Closed
.
Funciones públicas
Anular
void Abort( void )
Cerrar de forma anticipada el extremo, es decir, enviar paquetes RST.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Confirma la recepción del texto del mensaje.
Utiliza este método para confirmar la recepción de la totalidad o una parte de los datos recibidos. La semántica operativa no está definida si len
es mayor que el total de datos recibidos no confirmados pendientes.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
Vincular
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Vincular el extremo a una dirección IP de interfaz
Vincula el extremo a la dirección IP de la interfaz de red especificada.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
En LwIP, este método no se debe llamar con el bloqueo de pila de LwIP ya adquirido.
Cerrar
INET_ERROR Close( void )
Inicia el cierre completo de TCP; en otras palabras, finaliza con el envío y la recepción.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Valores de retorno |
|
Conectar
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Inicia una conexión 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.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Inhabilita el “keep-alive” de TCP de 12 a 1 con la nueva opción de compresión.
TCPEndPoint::DisableKeepAlive.
Inhabilita los sondeos keepalive de TCP en la conexión TCP asociada.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valores de retorno |
|
Nota: Solo se puede llamar a este método cuando el extremo se encuentra en uno de los estados de conexión. Este método no realiza ninguna acción si no se habilitaron los keepalives en el extremo.
DisableReceive
void DisableReceive( void )
Inhabilitar recepción
Inhabilitar todos los controladores de eventos Los datos enviados a un endpoint que inhabilita la recepción se confirmarán hasta que se agote la ventana de recepción.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Habilita el “keep-alive” del TCP de 12 a 1 con la nueva opción de compresión.
Iniciar la transmisión automática de “keep-alive” de TCP segmentos de sondeo cada interval
segundos. La conexión se anulará automáticamente después de recibir una respuesta negativa o después de enviar timeoutCount
segmentos de sondeo sin recibir una respuesta positiva.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||
Valores de retorno |
|
Consulta RFC 1122, sección 4.2.3.6 para obtener detalles de las especificaciones.
Habilita los sondeos keepalive de TCP en la conexión TCP asociada.
Nota: Solo se puede llamar a este método cuando el extremo se encuentra en uno de los estados de conexión. Se puede llamar a este método varias veces para ajustar el intervalo de keepalive o el recuento del tiempo de espera.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
HabilitarNoDelay.
Para desactivar el algoritmo de almacenamiento en búfer Nagle en TCP, configura las opciones de socket TCP_NODELAY.
EnableReceive
void EnableReceive( void )
Habilitar recepción
Habilita todos los controladores de eventos. Los datos enviados a un endpoint que inhabilita la recepción se confirmarán hasta que se agote la ventana de recepción.
Gratis
void Free( void )
Inicia (o continúa) el cierre completo de TCP e ignora los errores.
El objeto se devuelve al grupo gratuito, y todas las referencias de usuario restantes ya no serán válidas.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Extrae la dirección IP y el puerto TCP del extremo local.
No uses los valores del puntero NULL
para ningún argumento.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Extrae la dirección IP y el puerto TCP del extremo remoto.
No uses los valores del puntero NULL
para ningún argumento.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
IsConnected
bool IsConnected( void ) const
Extrae si se estableció la conexión TCP.
Escuchar
INET_ERROR Listen( uint16_t backlog )
Prepara el extremo para recibir mensajes de TCP.
Si State
ya es kState_Listening
, no se realiza ninguna operación; de lo contrario, State
se establece en kState_Listening
y el extremo está preparado para recibir mensajes de TCP, según la semántica de la plataforma.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
En algunas plataformas, no se usa el argumento backlog
(la profundidad de la cola es fija; solo se puede aceptar una conexión a la vez).
En los sistemas LwIP, no se debe llamar a este método con el bloqueo de pila de LwIP ya adquirido.
LogId
uint16_t LogId( void )
Obtén un identificador para el extremo.
Detalles | |
---|---|
Resultado que se muestra |
Muestra un identificador único opaco para los registros de uso.
|
MarkActive
void MarkActive( void )
Ten en cuenta la actividad, en otras palabras, que restableces el temporizador de inactividad.
Restablece el temporizador de inactividad a cero.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Extrae la longitud de los datos de recepción no confirmados.
Detalles | |
---|---|
Resultado que se muestra |
Cantidad de bytes en la cola de recepción que aún no se confirmaron con
AckReceive(uint16_t len) . |
PendingSendLength
uint32_t PendingSendLength( void )
Extrae la longitud de los datos que esperan la primera transmisión.
Detalles | |
---|---|
Resultado que se muestra |
Cantidad de bytes no transmitidos en la cola de transmisión.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Envía el texto del mensaje al encabezado de la cola de recepción.
Solo los controladores de eventos de recepción de datos pueden llamar a este método para volver a colocar una parte de los datos no confirmadas en la cola de recepción. La semántica operativa no está definida si el llamador está fuera del alcance de un controlador de eventos de recepción de datos, data
no es el Weave::System::PacketBuffer
proporcionado al controlador o data
no contiene la parte no confirmada restante después de los bytes confirmados por una llamada anterior al método AckReceive(uint16_t len)
.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
Enviar
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Envía texto del mensaje con la conexión TCP.
Se llama al método Weave::System::PacketBuffer::Free
en el argumento data
sin importar si la transmisión se realiza correctamente o no.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Establece el tiempo de espera para que Connect se ejecute correctamente o muestre un error.
.Detalles | |||
---|---|---|---|
Parámetros |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
Establece la opción de socket TCP_USER_TIMEOUT.
Cuando el valor es superior a 0, especifica la cantidad máxima de tiempo (expresada en milisegundos) durante la que los datos transmitidos pueden permanecer sin reconocer antes de que el TCP cierre por la fuerza la conexión correspondiente. Si el valor de la opción se especifica como 0, TCP usará el valor predeterminado del sistema. Consulta la RFC 5482 para obtener más detalles.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
Establece la opción de socket de tiempo de espera de usuario de TCP.
Cuando el valor es superior a 0, especifica la cantidad máxima de tiempo (expresada en milisegundos) durante la que los datos transmitidos pueden permanecer sin reconocer antes de que el TCP cierre por la fuerza la conexión correspondiente. Si el valor de la opción se especifica como 0, TCP usará el valor predeterminado del sistema. Consulta la RFC 5482 para obtener más detalles.
Nota: Solo se puede llamar a este método cuando el extremo se encuentra en uno de los estados de conexión. Se puede llamar a este método varias veces para ajustar el intervalo de keepalive o el recuento del tiempo de espera.
Cierre
INET_ERROR Shutdown( void )
Inicie el cierre parcial del TCP, en otras palabras, finalice con el envío.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Valores de retorno |
|