nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Los objetos de esta clase representan extremos de transporte TCP.
Resumen
La capa Nest Inet encapsula métodos para interactuar con extremos de transporte TCP (sockets SOCK_STREAM en sistemas Linux y derivados de BSD) o bloques de control de protocolo TCP LwIP, ya que el sistema está configurado de manera correspondiente.
Herencia
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 control de eventos de error de aceptación de conexión. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de función de control de eventos de establecimiento de la conexión. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de función de control de eventos de establecimiento de la conexión. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
Tipo de función de control de eventos de conexión recibida. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
Tipo de función de control de eventos de recepción de datos. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
Tipo de función de control 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 función de control de la señal modificada de SendIdle de TCP. |
Atributos públicos |
|
---|---|
OnAcceptError
|
El delegado de la función de control de eventos 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
|
Delegado de la función de control de eventos de conexión del extremo.
|
OnDataReceived
|
El delegado de la función de control de eventos de recepción de texto del mensaje 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 de control de eventos del extremo que indica cuándo cambia la inactividad del canal de envío de la conexión TCP.
|
ReceiveEnabled
|
bool
Interruptor de control que indica si la aplicación recibe datos.
|
State
|
enum nl::Inet::TCPEndPoint::@10
Estado dinámico básico del extremo subyacente.
|
Funciones públicas |
|
---|---|
Abort(void)
|
void
Cerrar el extremo de forma anulada, en otras palabras, enviar paquetes de RST
|
AckReceive(uint16_t len)
|
Confirmar recepción del texto del mensaje
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Vincula el extremo a una dirección IP de interfaz.
|
Close(void)
|
Iniciar el cierre completo de TCP; en otras palabras, finalizar con envío y recepción.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Inicia una conexión TCP.
|
DisableKeepAlive(void)
|
Inhabilita la opción “keep-alive” del TCP.
|
DisableReceive(void)
|
void
Inhabilitar recepción.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Habilita la opción “keep-alive” del TCP.
|
EnableNoDelay(void)
|
HabilitarNoDelay
|
EnableReceive(void)
|
void
Habilita la 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
|
Extraer 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 TCP.
|
LogId(void)
|
uint16_t
Obtén un identificador para el extremo.
|
MarkActive(void)
|
void
Observa la actividad; en otras palabras, restablece el temporizador de inactividad.
|
PendingReceiveLength(void)
|
uint32_t
Extrae la longitud de los datos recibidos no confirmados.
|
PendingSendLength(void)
|
uint32_t
Extrae la longitud de los datos que esperan la primera transmisión.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Enviar el texto del mensaje de vuelta al encabezado de la cola de recepción
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Envía el texto del mensaje mediante 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)
|
Configura la opción de socket TCP_USER_TIMEOUT.
|
Shutdown(void)
|
Inicia el TCP de cierre parcial, es decir, finaliza con el envío.
|
Tipos públicos
@10
@10
Estado dinámico básico del extremo subyacente.
Los objetos se inicializan en el estado “listo”; pasan a los estados posteriores que corresponden a una simplificación de los estados de la máquina de estado de transporte TCP.
Nota: La enumeración del 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 sin abrir" y "abierto antes ahora cerrado" que existía anteriormente en los estados kState_Ready
y kState_Closed
.
Propiedades | |
---|---|
kState_Bound
|
Vinculado al extremo, pero sin escucha. |
kState_Closed
|
El extremo está cerrado y listo para su lanzamiento. |
kState_Closing
|
El extremo se cierra de manera bidireccional. |
kState_Connected
|
El extremo está conectado y listo para tx/rx. |
kState_Connecting
|
El extremo está intentando conectarse. |
kState_Listening
|
Conexiones que reciben el extremo. |
kState_Ready
|
Se inicializó el extremo, pero no se vinculó. |
kState_ReceiveShutdown
|
El extremo 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 control de eventos de error 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 la 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 las conexiones exitosas de las fallas.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de función de control de eventos de establecimiento de la conexión.
Proporciona una función de este tipo al miembro delegado de OnConnectionClosed
para procesar los eventos de finalización de conexión en endPoint
. El argumento err
distingue entre las terminaciones exitosas y las fallas.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Tipo de función de control de eventos de conexión recibida.
Proporciona una función de este tipo al miembro delegado de 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 control de eventos de recepción de datos.
Proporciona una función de este tipo al miembro delegado OnDataReceived
para procesar 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 la recepción de los datos procesados mediante el método AckReceive
. También se debe invocar el método Free
del búfer de datos, a menos que se use PutBackReceivedData
en su lugar.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Tipo de función de control de eventos de transmisión de datos.
Proporciona una función de este tipo al miembro delegado de 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 son aptas para el envío mediante 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 de 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 función de control de la señal modificada de SendIdle de TCP.
Proporciona una función de este tipo al miembro delegado de 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
El delegado de la función de control de eventos 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
Delegado de la función de control de eventos de conexión del extremo.
OnDataReceived
OnDataReceivedFunct OnDataReceived
El delegado de la función de control de eventos de recepción de texto del mensaje 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 de control de eventos del extremo que indica cuándo cambia la inactividad del canal de envío de la conexión TCP.
Las capas superiores la usan para tomar las medidas adecuadas en función de si los datos enviados se entregaron al intercambio de tráfico de manera confiable.
ReceiveEnabled
bool ReceiveEnabled
Interruptor de control que indica si la aplicación recibe datos.
Estado
enum nl::Inet::TCPEndPoint::@10 State
Estado dinámico básico del extremo subyacente.
Los objetos se inicializan en el estado “listo”; pasan a los estados posteriores que corresponden a una simplificación de los estados de la máquina de estado de transporte TCP.
Nota: La enumeración del 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 sin abrir" y "abierto antes ahora cerrado" que existía anteriormente en los estados kState_Ready
y kState_Closed
.
Funciones públicas
Anular
void Abort( void )
Cerrar el extremo de forma anulada, en otras palabras, enviar paquetes de RST
AckReceive
INET_ERROR AckReceive( uint16_t len )
Confirmar recepción del texto del mensaje
Utiliza este método para confirmar la recepción de todos o parte de los datos recibidos. La semántica operativa no está definida si len
es mayor que el total de datos recibidos pendientes no confirmados.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Vincular
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Vincula 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 que se muestran |
|
En LwIP, no se debe llamar a este método con el bloqueo de pila LwIP ya adquirido.
Cerrar
INET_ERROR Close( void )
Iniciar el cierre completo de TCP; en otras palabras, finalizar con envío y recepción.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Valores que se muestran |
|
Conéctate
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 que se muestran |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Inhabilita la opción “keep-alive” del TCP.
TCPEndPoint::DisableKeepAlive.
Inhabilita los sondeos de keepalive de TCP en la conexión TCP asociada.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valores que se muestran |
|
Nota: Solo se puede llamar a este método cuando el extremo está en uno de los estados conectados. Este método no hace nada si no se habilitaron keepalives en el extremo.
DisableReceive
void DisableReceive( void )
Inhabilitar recepción.
Inhabilita todos los controladores de eventos. Los datos enviados a un extremo que inhabilita la recepción se confirmarán hasta que el período de recepción se agote.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Habilita la opción “keep-alive” del TCP.
Comienza a transmitir automáticamente segmentos del sondeo de “keep-alive” de TCP cada interval
segundos. La conexión se anulará automáticamente si se recibe una respuesta negativa o si se envían segmentos de sondeo timeoutCount
sin recibir una respuesta positiva.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||
Valores que se muestran |
|
Consulta RFC 1122, sección 4.2.3.6 para conocer los detalles de las especificaciones.
Habilita los sondeos de keepalive de TCP en la conexión TCP asociada.
Nota: Solo se puede llamar a este método cuando el extremo está en uno de los estados conectados. Se puede llamar a este método varias veces para ajustar el intervalo de keepalive o el recuento de tiempo de espera.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
HabilitarNoDelay
Desactiva el algoritmo de almacenamiento en búfer de Nagle en TCP configurando las opciones de socket TCP_NODERA.
EnableReceive
void EnableReceive( void )
Habilita la recepción.
Habilitar todos los controladores de eventos Los datos enviados a un extremo que inhabilita la recepción se confirmarán hasta que el período de recepción se agote.
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, por lo tanto, todas las referencias de usuario restantes son no 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 valores de puntero NULL
para ningún argumento.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Extraer la dirección IP y el puerto TCP del extremo remoto
No uses valores de puntero NULL
para ningún argumento.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
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 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 TCP, según la semántica de la plataforma.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
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 LwIP ya adquirido.
LogId
uint16_t LogId( void )
Obtén un identificador para el extremo.
Detalles | |
---|---|
Qué muestra |
Muestra un identificador único opaco para los registros de uso.
|
MarkActive
void MarkActive( void )
Observa la actividad; en otras palabras, restablece el temporizador de inactividad.
Restablece el temporizador de inactividad a cero.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Extrae la longitud de los datos recibidos no confirmados.
Detalles | |
---|---|
Qué 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 | |
---|---|
Qué muestra |
Número de bytes no transmitidos en la cola de transmisión.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Enviar el texto del mensaje de vuelta 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 no confirmada de datos 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 que se muestran |
|
Enviar
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Envía el texto del mensaje mediante la conexión TCP.
Se llama al método Weave::System::PacketBuffer::Free
en el argumento data
, independientemente de si la transmisión se realizó correctamente o no.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
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 )
Configura la opción de socket TCP_USER_TIMEOUT.
Cuando el valor es mayor que 0, especifica la cantidad máxima de tiempo (expresada en milisegundos) en que los datos transmitidos pueden permanecer no confirmados antes de que el TCP cierre forzadamente la conexión correspondiente. Si el valor de la opción se especifica como 0, TCP usará el valor predeterminado del sistema. Consulta RFC 5482 para obtener más detalles.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Configura la opción de socket de tiempo de espera del usuario TCP.
Cuando el valor es mayor que 0, especifica la cantidad máxima de tiempo (expresada en milisegundos) en que los datos transmitidos pueden permanecer no confirmados antes de que el TCP cierre forzadamente la conexión correspondiente. Si el valor de la opción se especifica como 0, TCP usará el valor predeterminado del sistema. Consulta RFC 5482 para obtener más detalles.
Nota: Solo se puede llamar a este método cuando el extremo está en uno de los estados conectados. Se puede llamar a este método varias veces para ajustar el intervalo de keepalive o el recuento de tiempo de espera.
Cierre
INET_ERROR Shutdown( void )
Inicia el TCP de cierre parcial, es decir, finaliza con el envío.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Valores que se muestran |
|