nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Os objetos dessa classe representam endpoints de transporte TCP.
Resumo
A camada Nest Inet encapsula métodos para interagir com endpoints de transporte TCP (soquetes SOCK_STREAM em sistemas derivados Linux e BSD) ou blocos de controle do protocolo TCP LwIP, conforme a configuração do sistema.
Herança
Herda de: nl::Inet::EndPointBasis
Tipos públicos |
|
---|---|
@10{
|
enum Estado dinâmico básico do endpoint subjacente. |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de função de tratamento do evento de erro de aceitação de conexão. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de função de manipulação do evento de estabelecimento de conexão. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de função de manipulação do evento de estabelecimento de conexão. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
Tipo de função de manipulação de eventos de conexão recebida. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
Tipo de função de manipulação de eventos de recepção de dados. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
Tipo de função de tratamento do evento de transmissão de dados. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
Tipo de função de manipulação do evento de recepção de meio fechamento. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
O tipo de TCP SendIdle alterou a função de tratamento de sinal. |
Atributos públicos |
|
---|---|
OnAcceptError
|
O delegado da função de manipulação do evento de aceitação de conexão do endpoint.
|
OnConnectComplete
|
Delegado da função de manipulação do evento de estabelecimento de conexão do endpoint.
|
OnConnectionClosed
|
Delegado da função de manipulação de eventos de fechamento do endpoint.
|
OnConnectionReceived
|
A conexão do endpoint recebe o delegado da função de manipulação de eventos.
|
OnDataReceived
|
O delegado da função de manipulação de eventos de recepção de texto de mensagens do endpoint.
|
OnDataSent
|
Delegado da função de manipulação do evento de transmissão de texto de mensagem do endpoint.
|
OnPeerClose
|
Delegado da função de manipulação de eventos de recebimento de meio fechamento do endpoint.
|
OnTCPSendIdleChanged
|
O delegado da função de manipulação de eventos do endpoint que sinaliza quando a ociosidade do canal de envio da conexão TCP muda.
|
ReceiveEnabled
|
bool
Chave de controle que indica se o aplicativo está recebendo dados.
|
State
|
enum nl::Inet::TCPEndPoint::@10
Estado dinâmico básico do endpoint subjacente.
|
Funções públicas |
|
---|---|
Abort(void)
|
void
Feche o endpoint antecipadamente. Em outras palavras, envie pacotes RST.
|
AckReceive(uint16_t len)
|
Confirmar o recebimento do texto da mensagem.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Vincular o endpoint a um endereço IP de interface.
|
Close(void)
|
Iniciar o fechamento total do TCP, ou seja, finalizar com o envio e o recebimento.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Inicie uma conexão TCP.
|
DisableKeepAlive(void)
|
Desativar o "keep-alive" do TCP é a melhor opção.
|
DisableReceive(void)
|
void
Desativar recepção.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Ative o "keep-alive" do TCP é a melhor opção.
|
EnableNoDelay(void)
|
enableNoDelay.
|
EnableReceive(void)
|
void
Ativar recepção.
|
Free(void)
|
void
Inicie (ou continue) o fechamento total do TCP, ignorando erros.
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
Extrair o endereço IP e a porta TCP do endpoint local.
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
Extrair o endereço IP e a porta TCP do endpoint remoto.
|
IsConnected(void) const
|
bool
Extraia se a conexão TCP foi estabelecida.
|
Listen(uint16_t backlog)
|
Prepare o endpoint para receber mensagens TCP.
|
LogId(void)
|
uint16_t
Consiga um identificador para o endpoint.
|
MarkActive(void)
|
void
Observe a atividade, em outras palavras, redefina o timer de inatividade.
|
PendingReceiveLength(void)
|
uint32_t
Extraia o comprimento dos dados de recebimento não confirmados.
|
PendingSendLength(void)
|
uint32_t
Extrair o comprimento dos dados que aguardam a primeira transmissão.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Enviar o texto da mensagem de volta para o início da fila de recebimento.
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Enviar o texto da mensagem na conexão TCP.
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Defina o tempo limite para que o Connect funcione ou retorne um erro.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Defina a opção de soquete TCP TCP_USER_TIMEOUT.
|
Shutdown(void)
|
Iniciar o TCP meio fechado, ou seja, terminar com o envio.
|
Tipos públicos
@10
@10
Estado dinâmico básico do endpoint subjacente.
Os objetos são inicializados no estado "pronto" prossiga para os estados subsequentes correspondentes a uma simplificação dos estados da máquina de estado de transporte TCP.
Observação:a enumeração do estado kBasisState_Closed
é mapeada para kState_Ready
por motivos históricos de compatibilidade binária. O kState_Closed
existe para identificar separadamente a distinção entre "ainda não aberto". e "anteriormente abertos agora
fechada" que existiam anteriormente nos estados kState_Ready
e kState_Closed
.
Propriedades | |
---|---|
kState_Bound
|
Endpoint vinculado, mas sem escutando. |
kState_Closed
|
Endpoint fechado, pronto para lançamento. |
kState_Closing
|
O endpoint é fechado de forma bidirecional. |
kState_Connected
|
Endpoint conectado, pronto para contrato/rx. |
kState_Connecting
|
O endpoint está tentando se conectar. |
kState_Listening
|
Endpoint que recebe conexões. |
kState_Ready
|
O endpoint foi inicializado, mas não vinculado. |
kState_ReceiveShutdown
|
O endpoint respondeu ao fechamento parcial. |
kState_SendShutdown
|
O endpoint iniciou o meio fechamento. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de função de tratamento do evento de erro de aceitação de conexão.
Forneça uma função desse tipo ao membro delegado OnAcceptError
para processar eventos de erro de aceitação de conexão em endPoint
. O argumento err
fornece detalhes específicos sobre o tipo do erro.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de função de manipulação do evento de estabelecimento de conexão.
Forneça uma função desse tipo ao membro delegado OnConnectComplete
para processar eventos de estabelecimento de conexão em endPoint
. O argumento err
distingue conexões bem-sucedidas de falhas.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de função de manipulação do evento de estabelecimento de conexão.
Forneça uma função desse tipo ao membro delegado OnConnectionClosed
para processar eventos de encerramento de conexão no endPoint
. O argumento err
distingue encerramentos bem-sucedidos de falhas.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Tipo de função de manipulação de eventos de conexão recebida.
Forneça uma função desse tipo ao membro delegado OnConnectionReceived
para processar eventos de recepção de conexão no listeningEndPoint
. O endpoint conEndPoint
recém-recebido está localizado no endereço IP peerAddr
e na porta TCP peerPort
.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
Tipo de função de manipulação de eventos de recepção de dados.
Forneça uma função desse tipo ao membro delegado OnDataReceived
para processar eventos de recepção de dados em endPoint
, em que data
é o texto da mensagem recebido.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Um manipulador de eventos de recepção de dados precisa confirmar os dados processados usando o método AckReceive
. O método Free
no buffer de dados também precisa ser invocado, a menos que PutBackReceivedData
seja usado.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Tipo de função de tratamento do evento de transmissão de dados.
Forneça uma função desse tipo ao membro delegado OnDataSent
para processar eventos de transmissão de dados em endPoint
, em que len
é o tamanho do texto da mensagem adicionado à janela de transmissão TCP, que pode ser enviado pela pilha de rede subjacente.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Tipo de função de manipulação do evento de recepção de meio fechamento.
Forneça uma função desse tipo ao membro delegado OnPeerClose
para processar eventos de encerramento de conexão no endPoint
.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
O tipo de TCP SendIdle alterou a função de tratamento de sinal.
Forneça uma função desse tipo ao membro delegado OnTCPSendIdleChanged
para processar o evento do canal de envio do TCPEndPoint mudando de estado entre inativo e não inativo.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Atributos públicos
OnAcceptError
OnAcceptErrorFunct OnAcceptError
O delegado da função de manipulação do evento de aceitação de conexão do endpoint.
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
Delegado da função de manipulação do evento de estabelecimento de conexão do endpoint.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
Delegado da função de manipulação de eventos de fechamento do endpoint.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
A conexão do endpoint recebe o delegado da função de manipulação de eventos.
OnDataReceived
OnDataReceivedFunct OnDataReceived
O delegado da função de manipulação de eventos de recepção de texto de mensagens do endpoint.
OnDataSent
OnDataSentFunct OnDataSent
Delegado da função de manipulação do evento de transmissão de texto de mensagem do endpoint.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Delegado da função de manipulação de eventos de recebimento de meio fechamento do endpoint.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
O delegado da função de manipulação de eventos do endpoint que sinaliza quando a ociosidade do canal de envio da conexão TCP muda.
Ele é usado pelas camadas superiores para tomar as ações apropriadas com base na entrega confiável dos dados enviados ao terminal.
ReceiveEnabled
bool ReceiveEnabled
Chave de controle que indica se o aplicativo está recebendo dados.
Estado
enum nl::Inet::TCPEndPoint::@10 State
Estado dinâmico básico do endpoint subjacente.
Os objetos são inicializados no estado "pronto" prossiga para os estados subsequentes correspondentes a uma simplificação dos estados da máquina de estado de transporte TCP.
Observação:a enumeração do estado kBasisState_Closed
é mapeada para kState_Ready
por motivos históricos de compatibilidade binária. O kState_Closed
existe para identificar separadamente a distinção entre "ainda não aberto". e "anteriormente abertos agora
fechada" que existiam anteriormente nos estados kState_Ready
e kState_Closed
.
Funções públicas
Cancelar
void Abort( void )
Feche o endpoint antecipadamente. Em outras palavras, envie pacotes RST.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Confirmar o recebimento do texto da mensagem.
Use este método para confirmar a recepção de todos ou parte dos dados recebidos. A semântica operacional será indefinida se len
for maior que o total de dados recebidos não confirmados pendentes.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
Vincular
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Vincular o endpoint a um endereço IP de interface.
Vincula o endpoint ao endereço IP da interface de rede especificado.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||
Valores de retorno |
|
No LwIP, esse método não pode ser chamado com o bloqueio de pilha do LwIP já adquirido.
Fechar
INET_ERROR Close( void )
Iniciar o fechamento total do TCP, ou seja, finalizar com o envio e o recebimento.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Valores de retorno |
|
Connect
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Inicie uma conexão 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.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Desativar o "keep-alive" do TCP é a melhor opção.
TCPEndPoint::DisableKeepAlive.
Desativar sondagens de sinal de atividade TCP na conexão TCP associada.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valores de retorno |
|
Observação:esse método só pode ser chamado quando o endpoint está em um dos estados conectados. Esse método não fará nada se os sinais de atividade não estiverem ativados no endpoint.
DisableReceive
void DisableReceive( void )
Desativar recepção.
Desative todos os manipuladores de eventos. Os dados enviados a um endpoint que desativa a recepção serão reconhecidos até que a janela de recebimento se esgote.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Ative o "keep-alive" do TCP é a melhor opção.
Começa a transmitir automaticamente o "keep-alive" do TCP sondar segmentos a cada interval
segundos. A conexão será cancelada automaticamente após receber uma resposta negativa ou depois de enviar timeoutCount
segmentos de sondagem sem receber uma resposta positiva.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||
Valores de retorno |
|
Consulte a seção 4.2.3.6 do RFC 1122 para obter detalhes sobre a especificação.
Ative as sondagens de sinal de atividade TCP na conexão TCP associada.
Observação:esse método só pode ser chamado quando o endpoint está em um dos estados conectados. Esse método pode ser chamado várias vezes para ajustar o intervalo do sinal de atividade ou a contagem de tempo limite.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
enableNoDelay.
Desative o algoritmo de buffering ágle em TCP configurando as opções de soquete TCP_NODELAY.
EnableReceive
void EnableReceive( void )
Ativar recepção.
Ative todos os manipuladores de eventos. Os dados enviados a um endpoint que desativa a recepção serão reconhecidos até que a janela de recebimento se esgote.
Gratuito
void Free( void )
Inicie (ou continue) o fechamento total do TCP, ignorando erros.
O objeto é retornado ao pool sem custo financeiro e todas as referências de usuário restantes se tornam inválidas em seguida.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Extrair o endereço IP e a porta TCP do endpoint local.
Não use valores de ponteiro NULL
para nenhum dos argumentos.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Extrair o endereço IP e a porta TCP do endpoint remoto.
Não use valores de ponteiro NULL
para nenhum dos argumentos.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
IsConnected
bool IsConnected( void ) const
Extraia se a conexão TCP foi estabelecida.
Ouvir
INET_ERROR Listen( uint16_t backlog )
Prepare o endpoint para receber mensagens TCP.
Se o State
já for kState_Listening
, nenhuma operação será realizada. Caso contrário, o State
será definido como kState_Listening
e o endpoint estará preparado para receber mensagens TCP, de acordo com a semântica da plataforma.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
Em algumas plataformas, o argumento backlog
não é usado. A profundidade da fila é fixa, e apenas uma conexão pode ser aceita por vez.
Em sistemas LwIP, esse método não pode ser chamado com o bloqueio de pilha LwIP já adquirido
LogId
uint16_t LogId( void )
Consiga um identificador para o endpoint.
Detalhes | |
---|---|
Retornos |
Retorna um identificador exclusivo opaco para registros de uso.
|
MarkActive
void MarkActive( void )
Observe a atividade, em outras palavras, redefina o timer de inatividade.
Redefina o timer de inatividade para zero.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Extraia o comprimento dos dados de recebimento não confirmados.
Detalhes | |
---|---|
Retornos |
Número de bytes na fila de recebimento que ainda não foram confirmados com
AckReceive(uint16_t len) . |
PendingSendLength
uint32_t PendingSendLength( void )
Extrair o comprimento dos dados que aguardam a primeira transmissão.
Detalhes | |
---|---|
Retornos |
Número de bytes não transmitidos na fila de transmissão.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Enviar o texto da mensagem de volta para o início da fila de recebimento.
Esse método só pode ser chamado por manipuladores de eventos de recepção de dados para colocar uma parte não confirmada de dados de volta na fila de recebimento. A semântica operacional será indefinida se o autor da chamada estiver fora do escopo de um manipulador de eventos de recepção de dados, data
não for o Weave::System::PacketBuffer
fornecido ao gerenciador ou data
não contiver a parte não confirmada restante após os bytes confirmados por uma chamada anterior para o método AckReceive(uint16_t len)
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
Enviar
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Enviar o texto da mensagem na conexão TCP.
O método Weave::System::PacketBuffer::Free
é chamado no argumento data
, independentemente de a transmissão ter sido bem-sucedida ou não.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Defina um tempo limite para que o Connect funcione ou retorne um erro.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
Defina a opção de soquete TCP TCP_USER_TIMEOUT.
Quando o valor é maior que 0, ele especifica a quantidade máxima de tempo em milissegundos que os dados transmitidos podem permanecer sem confirmação antes que o TCP force o fechamento da conexão correspondente. Se o valor da opção for especificado como 0, o TCP usará o padrão do sistema. Consulte o RFC 5482 para obter mais detalhes.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
Define a opção de soquete do tempo limite do usuário TCP.
Quando o valor é maior que 0, ele especifica a quantidade máxima de tempo em milissegundos que os dados transmitidos podem permanecer sem confirmação antes que o TCP force o fechamento da conexão correspondente. Se o valor da opção for especificado como 0, o TCP usará o padrão do sistema. Consulte o RFC 5482 para obter mais detalhes.
Observação:esse método só pode ser chamado quando o endpoint está em um dos estados conectados. Esse método pode ser chamado várias vezes para ajustar o intervalo do sinal de atividade ou a contagem de tempo limite.
Encerramento
INET_ERROR Shutdown( void )
Iniciar o TCP meio fechado, ou seja, terminar com o envio.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Valores de retorno |
|