nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Gli oggetti di questa classe rappresentano gli endpoint di trasporto TCP.
Riepilogo
Nest Inet Layer incapsula i metodi per interagire con gli endpoint di trasporto TCP (socket SOCK_STREAM su sistemi Linux e BSD) o con i blocchi di controllo del protocollo TCP LwIP, poiché il sistema è configurato di conseguenza.
Eredità
Eredita da: nl::Inet::EndPointBasis
Tipi pubblici |
|
---|---|
@10{
|
enum Stato dinamico di base dell'endpoint sottostante. |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo di funzione di gestione dell'evento di errore di accettazione della connessione. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo di funzione di gestione dell'evento di creazione della connessione. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo di funzione di gestione dell'evento di creazione della connessione. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
Funzione di gestione degli eventi del tipo di connessione ricevuta. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
Tipo di funzione di gestione degli eventi di ricezione dati. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
Tipo di funzione di gestione dell'evento di trasmissione dati. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
Tipo di funzione di gestione dell'evento di ricezione semichiuso. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
Il tipo di funzione di gestione del segnale TCP SendIdle è stata modificata. |
Attributi pubblici |
|
---|---|
OnAcceptError
|
Il delegato della funzione di gestione dell'evento di accettazione della connessione dell'endpoint.
|
OnConnectComplete
|
Il delegato della funzione di gestione dell'evento di creazione della connessione dell'endpoint.
|
OnConnectionClosed
|
Il delegato della funzione di gestione degli eventi di chiusura dell'endpoint.
|
OnConnectionReceived
|
La connessione dell'endpoint riceve il delegato della funzione di gestione degli eventi.
|
OnDataReceived
|
Il delegato della funzione di gestione dell'evento di ricezione del testo del messaggio dell'endpoint.
|
OnDataSent
|
Il delegato della funzione di gestione dell'evento di trasmissione del testo del messaggio dell'endpoint.
|
OnPeerClose
|
Il delegato della funzione di gestione degli eventi di gestione degli eventi di ricezione dell'endpoint metà chiusura.
|
OnTCPSendIdleChanged
|
Il delegato della funzione di gestione degli eventi dell'endpoint che segnala quando cambia l'inattività del canale di invio della connessione TCP.
|
ReceiveEnabled
|
bool
Opzione di controllo che indica se l'applicazione sta ricevendo dati.
|
State
|
enum nl::Inet::TCPEndPoint::@10
Stato dinamico di base dell'endpoint sottostante.
|
Funzioni pubbliche |
|
---|---|
Abort(void)
|
void
Chiusura abortiva dell'endpoint, in altre parole, invia pacchetti RST.
|
AckReceive(uint16_t len)
|
Conferma la ricezione del testo del messaggio.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Associa l'endpoint a un indirizzo IP dell'interfaccia.
|
Close(void)
|
Avvio della chiusura completa TCP, in altre parole, terminata con l'invio e la ricezione.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Avvia una connessione TCP.
|
DisableKeepAlive(void)
|
Disabilita il "keep-alive" su TCP .
|
DisableReceive(void)
|
void
Disattiva la ricezione.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Attiva il "keep-alive" su TCP .
|
EnableNoDelay(void)
|
EnableNoDelay.
|
EnableReceive(void)
|
void
Attiva la ricezione.
|
Free(void)
|
void
Avvia (o continua) la chiusura completa TCP, ignorando gli errori.
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
Estrai l'indirizzo IP e la porta TCP dell'endpoint locale.
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
Estrai l'indirizzo IP e la porta TCP dell'endpoint remoto.
|
IsConnected(void) const
|
bool
Estrai se è stata stabilita la connessione TCP.
|
Listen(uint16_t backlog)
|
Prepara l'endpoint per ricevere i messaggi TCP.
|
LogId(void)
|
uint16_t
Ottieni un identificatore per l'endpoint.
|
MarkActive(void)
|
void
Le attività relative alle note, in altre parole, reimpostano il timer di inattività.
|
PendingReceiveLength(void)
|
uint32_t
Estrai la lunghezza dei dati di ricezione non confermati.
|
PendingSendLength(void)
|
uint32_t
Estrai la lunghezza dei dati in attesa della prima trasmissione.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Invia il testo del messaggio all'intestazione della coda di ricezione.
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Invia testo del messaggio su connessione TCP.
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Imposta il timeout per la connessione in modo che la connessione vada a buon fine o restituisca un errore.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Imposta l'opzione del socket TCP_USER_TIMEOUT TCP.
|
Shutdown(void)
|
Avvia TCP a metà chiusura, in altre parole, terminato con l'invio.
|
Tipi pubblici
@10
@10
Stato dinamico di base dell'endpoint sottostante.
Gli oggetti sono inizializzati nel campo di stato, procedere agli stati successivi corrispondenti a una semplificazione degli stati della macchina a stati di trasporto TCP.
Nota: l'enumerazione dello stato kBasisState_Closed
è mappata a kState_Ready
per motivi storici di compatibilità binaria. L'elemento kState_Closed
esistente serve a identificare separatamente la distinzione tra "non ancora aperto" e "precedentemente aperto adesso
chiuso" esistenti negli stati kState_Ready
e kState_Closed
.
Proprietà | |
---|---|
kState_Bound
|
Endpoint vincolato, ma non in ascolto. |
kState_Closed
|
Endpoint chiuso, pronto per il rilascio. |
kState_Closing
|
Endpoint che si chiude in modo bidirezionale. |
kState_Connected
|
Endpoint connesso, pronto per tx/rx. |
kState_Connecting
|
Un endpoint sta tentando di connettersi. |
kState_Listening
|
Endpoint che riceve connessioni. |
kState_Ready
|
Endpoint inizializzato, ma non associato. |
kState_ReceiveShutdown
|
L'endpoint ha risposto alla metà della chiusura. |
kState_SendShutdown
|
L'endpoint ha avviato la metà della chiusura. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo di funzione di gestione dell'evento di errore di accettazione della connessione.
Fornisci una funzione di questo tipo al membro delegato OnAcceptError
per elaborare gli eventi di errore di accettazione della connessione il giorno endPoint
. L'argomento err
fornisce dettagli specifici sul tipo di errore.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo di funzione di gestione dell'evento di creazione della connessione.
Fornisci una funzione di questo tipo al membro delegato di OnConnectComplete
in modo che elabori gli eventi di creazione della connessione il giorno endPoint
. L'argomento err
distingue le connessioni riuscite dagli errori.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo di funzione di gestione dell'evento di creazione della connessione.
Fornisci una funzione di questo tipo al membro delegato di OnConnectionClosed
per elaborare gli eventi di chiusura della connessione il giorno endPoint
. L'argomento err
distingue le chiusure riuscite dagli errori.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Funzione di gestione degli eventi del tipo di connessione ricevuta.
Fornisci una funzione di questo tipo al membro delegato di OnConnectionReceived
per elaborare gli eventi di ricezione della connessione su listeningEndPoint
. L'endpoint appena ricevuto conEndPoint
si trova all'indirizzo IP peerAddr
e alla porta TCP peerPort
.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
Tipo di funzione di gestione degli eventi di ricezione dati.
Fornisci una funzione di questo tipo al membro delegato di OnDataReceived
affinché elabori gli eventi di ricezione dati su endPoint
, dove data
è il testo del messaggio ricevuto.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Un gestore di eventi di ricezione dati deve confermare i dati elaborati utilizzando il metodo AckReceive
. È necessario richiamare anche il metodo Free
nel buffer di dati, a meno che non venga utilizzato PutBackReceivedData
.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Tipo di funzione di gestione dell'evento di trasmissione dati.
Fornisci al membro delegato di OnDataSent
una funzione di questo tipo in modo che elabori gli eventi di trasmissione di dati su endPoint
, dove len
è la lunghezza del testo del messaggio aggiunto alla finestra di trasmissione TCP e che è idoneo per l'invio dallo stack di rete sottostante.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Tipo di funzione di gestione dell'evento di ricezione semichiuso.
Fornisci una funzione di questo tipo al membro delegato di OnPeerClose
per elaborare gli eventi di chiusura della connessione il giorno endPoint
.
Dettagli | |||
---|---|---|---|
Parametri |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
Il tipo di funzione di gestione del segnale TCP SendIdle è stata modificata.
Fornisci una funzione di questo tipo al membro delegato OnTCPSendIdleChanged
per elaborare l'evento del canale di invio di TCPEndPoint che cambia stato da inattivo a non inattivo.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Attributi pubblici
OnAcceptError
OnAcceptErrorFunct OnAcceptError
Il delegato della funzione di gestione dell'evento di accettazione della connessione dell'endpoint.
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
Il delegato della funzione di gestione dell'evento di creazione della connessione dell'endpoint.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
Il delegato della funzione di gestione degli eventi di chiusura dell'endpoint.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
La connessione dell'endpoint riceve il delegato della funzione di gestione degli eventi.
OnDataReceived
OnDataReceivedFunct OnDataReceived
Il delegato della funzione di gestione dell'evento di ricezione del testo del messaggio dell'endpoint.
OnDataSent
OnDataSentFunct OnDataSent
Il delegato della funzione di gestione dell'evento di trasmissione del testo del messaggio dell'endpoint.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Il delegato della funzione di gestione degli eventi di gestione degli eventi di ricezione dell'endpoint metà chiusura.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
Il delegato della funzione di gestione degli eventi dell'endpoint che segnala quando cambia l'inattività del canale di invio della connessione TCP.
Viene utilizzato dai livelli superiori per intraprendere azioni appropriate a seconda che i dati inviati siano stati inviati in modo affidabile al peer.
ReceiveEnabled
bool ReceiveEnabled
Opzione di controllo che indica se l'applicazione sta ricevendo dati.
Stato
enum nl::Inet::TCPEndPoint::@10 State
Stato dinamico di base dell'endpoint sottostante.
Gli oggetti sono inizializzati nel campo di stato, procedere agli stati successivi corrispondenti a una semplificazione degli stati della macchina a stati di trasporto TCP.
Nota: l'enumerazione dello stato kBasisState_Closed
è mappata a kState_Ready
per motivi storici di compatibilità binaria. L'elemento kState_Closed
esistente serve a identificare separatamente la distinzione tra "non ancora aperto" e "precedentemente aperto adesso
chiuso" esistenti negli stati kState_Ready
e kState_Closed
.
Funzioni pubbliche
Interrompi
void Abort( void )
Chiusura abortiva dell'endpoint, in altre parole, invia pacchetti RST.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Conferma la ricezione del testo del messaggio.
Utilizza questo metodo per confermare la ricezione di tutti o parte dei dati ricevuti. La semantica operativa non è definita se len
è superiore al totale dei dati ricevuti non confermati in sospeso.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
Associa
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Associa l'endpoint a un indirizzo IP dell'interfaccia.
Associa l'endpoint all'indirizzo IP dell'interfaccia di rete specificato.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
Su LwIP, questo metodo non deve essere chiamato con il blocco dello stack LwIP già acquisito.
Chiudi
INET_ERROR Close( void )
Avvio della chiusura completa TCP, in altre parole, terminata con l'invio e la ricezione.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori restituiti |
|
Connetti
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Avvia una connessione 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.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Disabilita il "keep-alive" su TCP .
TCPEndPoint::DisableKeepAlive.
Disabilita i probe keepalive TCP sulla connessione TCP associata.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valori restituiti |
|
Nota:questo metodo può essere chiamato solo quando l'endpoint si trova in uno degli stati di connessione. Questo metodo non ha alcun effetto se le keepalive non sono state abilitate nell'endpoint.
DisableReceive
void DisableReceive( void )
Disattiva la ricezione.
Disattiva tutti i gestori di eventi. I dati inviati a un endpoint che disabilita la ricezione verranno confermati fino all'esaurimento della finestra di ricezione.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Attiva il "keep-alive" su TCP .
Avvia la trasmissione automatica del protocollo "keep-alive" TCP segmenti di probe ogni interval
secondi. La connessione si interromperà automaticamente dopo aver ricevuto una risposta negativa o dopo l'invio di timeoutCount
segmenti del probe senza ricevere una risposta positiva.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||
Valori restituiti |
|
Fare riferimento a RFC 1122, sezione 4.2.3.6 per i dettagli delle specifiche.
Abilita i probe keepalive TCP sulla connessione TCP associata.
Nota:questo metodo può essere chiamato solo quando l'endpoint si trova in uno degli stati di connessione. Questo metodo può essere chiamato più volte per regolare l'intervallo keepalive o il conteggio del timeout.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay.
Disattiva l'algoritmo di nagle buffering in TCP impostando le opzioni socket TCP_NOSHORT.
EnableReceive
void EnableReceive( void )
Attiva la ricezione.
Attiva tutti i gestori di eventi. I dati inviati a un endpoint che disabilita la ricezione verranno confermati fino all'esaurimento della finestra di ricezione.
Gratis
void Free( void )
Avvia (o continua) la chiusura completa TCP, ignorando gli errori.
L'oggetto viene restituito al pool senza costi e tutti i riferimenti utente rimanenti non saranno più validi.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Estrai l'indirizzo IP e la porta TCP dell'endpoint locale.
Non utilizzare valori del puntatore NULL
per nessuno dei due argomenti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Estrai l'indirizzo IP e la porta TCP dell'endpoint remoto.
Non utilizzare valori del puntatore NULL
per nessuno dei due argomenti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
IsConnected
bool IsConnected( void ) const
Estrai se è stata stabilita la connessione TCP.
Ascolta
INET_ERROR Listen( uint16_t backlog )
Prepara l'endpoint per ricevere i messaggi TCP.
Se State
è già kState_Listening
, non viene eseguita alcuna operazione, altrimenti State
viene impostato su kState_Listening
e l'endpoint è preparato per la ricezione di messaggi TCP, in base alla semantica della piattaforma.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
Su alcune piattaforme, l'argomento backlog
non viene utilizzato (la profondità della coda è fissa; è possibile accettare una sola connessione alla volta).
Sui sistemi LwIP, questo metodo non deve essere chiamato con il blocco dello stack LwIP già acquisito
LogId
uint16_t LogId( void )
Ottieni un identificatore per l'endpoint.
Dettagli | |
---|---|
Restituisce |
Restituisce un identificatore univoco opaco per i log di utilizzo.
|
MarkActive
void MarkActive( void )
Le attività relative alle note, in altre parole, reimpostano il timer di inattività.
Ripristina il timer di inattività su zero.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Estrai la lunghezza dei dati di ricezione non confermati.
Dettagli | |
---|---|
Restituisce |
Numero di byte nella coda di ricezione che non sono ancora stati confermati con
AckReceive(uint16_t len) . |
PendingSendLength
uint32_t PendingSendLength( void )
Estrai la lunghezza dei dati in attesa della prima trasmissione.
Dettagli | |
---|---|
Restituisce |
Numero di byte non trasmessi nella coda di trasmissione.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Invia il testo del messaggio all'intestazione della coda di ricezione.
Questo metodo può essere chiamato solo dai gestori di eventi di ricezione dati per reinserire una parte non confermata dei dati nella coda di ricezione. La semantica operativa non è definita se il chiamante non rientra nell'ambito di un gestore di eventi di ricezione dati, data
non è il Weave::System::PacketBuffer
fornito al gestore oppure data
non contiene la parte non confermata rimanente dopo i byte confermati da una precedente chiamata al metodo AckReceive(uint16_t len)
.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
Invia
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Invia testo del messaggio su connessione TCP.
Il metodo Weave::System::PacketBuffer::Free
viene richiamato sull'argomento data
indipendentemente dal fatto che la trasmissione sia riuscita o meno.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Imposta il timeout per la connessione in modo che la connessione vada a buon fine o restituisca un errore.
Dettagli | |||
---|---|---|---|
Parametri |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
Imposta l'opzione del socket TCP_USER_TIMEOUT TCP.
Quando il valore è maggiore di 0, specifica la quantità massima di tempo in millisecondi durante la quale i dati trasmessi possono rimanere non riconosciuti prima che TCP chiuda forzatamente la connessione corrispondente. Se il valore dell'opzione è specificato su 0, TCP utilizzerà il valore predefinito del sistema. Per ulteriori dettagli, vedi RFC 5482.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
Imposta l'opzione socket del timeout dell'utente TCP.
Quando il valore è maggiore di 0, specifica la quantità massima di tempo in millisecondi durante la quale i dati trasmessi possono rimanere non riconosciuti prima che TCP chiuda forzatamente la connessione corrispondente. Se il valore dell'opzione è specificato su 0, TCP utilizzerà il valore predefinito del sistema. Per ulteriori dettagli, vedi RFC 5482.
Nota:questo metodo può essere chiamato solo quando l'endpoint si trova in uno degli stati di connessione. Questo metodo può essere chiamato più volte per regolare l'intervallo keepalive o il conteggio del timeout.
Arresto
INET_ERROR Shutdown( void )
Avvia TCP a metà chiusura, in altre parole, terminato con l'invio.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori restituiti |
|