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 derivati da BSD) o con i blocchi di controllo del protocollo LwIP TCP, in quanto il sistema viene 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 degli eventi 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(*
Tipo di funzione di gestione degli eventi 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 degli eventi di trasmissione dati. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
Tipo di funzione di gestione dell'evento di ricezione a metà chiusura. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
Il tipo di funzione di gestione degli indicatori TCP SendIdle modificata. |
Attributi pubblici |
|
---|---|
OnAcceptError
|
Delegato della funzione di gestione dell'evento di accettazione della connessione dell'endpoint.
|
OnConnectComplete
|
Delegato per la gestione della funzione dell'evento di creazione della connessione dell'endpoint.
|
OnConnectionClosed
|
Delegato della funzione di gestione dell'evento di chiusura dell'endpoint.
|
OnConnectionReceived
|
La connessione dell'endpoint riceve il delegato della funzione di gestione degli eventi.
|
OnDataReceived
|
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 gestione dell'evento di trasmissione del testo dei messaggi dell'endpoint.
|
OnPeerClose
|
Il delegato della funzione di gestione degli eventi per la chiusura a metà dell'endpoint.
|
OnTCPSendIdleChanged
|
Il delegato della funzione di gestione degli eventi della segnalazione dell'endpoint quando cambia il canale di invio di inattività 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
Chiudi l'endpoint in modo non corretto, ovvero invia pacchetti RST.
|
AckReceive(uint16_t len)
|
Conferma la ricezione del testo del messaggio.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Associare l'endpoint a un indirizzo IP di interfaccia.
|
Close(void)
|
Avvia la chiusura completa TCP, in altre parole, termina sia con l'invio che con la ricezione.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Avvia una connessione TCP.
|
DisableKeepAlive(void)
|
Disattiva l'opzione "keep-alive" TCP.
|
DisableReceive(void)
|
void
Disattiva ricezione.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Attiva l'opzione TCP "keep-alive".
|
EnableNoDelay(void)
|
EnableNoDelay.
|
EnableReceive(void)
|
void
Attiva la ricezione.
|
Free(void)
|
void
Avvia (o continua) la chiusura completa del protocollo 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 viene stabilita la connessione TCP.
|
Listen(uint16_t backlog)
|
Prepara l'endpoint per ricevere messaggi TCP.
|
LogId(void)
|
uint16_t
Ottieni un identificatore per l'endpoint.
|
MarkActive(void)
|
void
Rileva l'attività, ossia reimposta il timer di inattività.
|
PendingReceiveLength(void)
|
uint32_t
Estrai la lunghezza dei dati ricevuti non confermati.
|
PendingSendLength(void)
|
uint32_t
Estrai la lunghezza dei dati in attesa di prima trasmissione.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Spingi il testo del messaggio all'inizio della coda di ricezione.
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Invia il testo del messaggio sulla connessione TCP.
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Imposta un timeout per consentire la riuscita di Connect o la restituzione di un errore.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Imposta l'opzione del socket TCP_USER_TIMEOUT TCP.
|
Shutdown(void)
|
Avvia TCP semitouso, in altre parole, terminato con l'invio.
|
Tipi pubblici
@10
@10
Stato dinamico di base dell'endpoint sottostante.
Gli oggetti vengono inizializzati nello stato "pronto", quindi passano agli stati successivi corrispondenti a una semplificazione degli stati della macchina a stato di trasporto TCP.
Nota: l'enumerazione dello stato kBasisState_Closed
è mappata su kState_Ready
per motivi storici di compatibilità binaria. Il campo kState_Closed
esistente serve a identificare separatamente la distinzione tra "non ancora aperto" e "in precedenza aperto ora
chiuso" che esisteva in precedenza negli stati kState_Ready
e kState_Closed
.
Proprietà | |
---|---|
kState_Bound
|
Vincolo a endpoint, ma non in ascolto. |
kState_Closed
|
Endpoint chiuso, pronto per il rilascio. |
kState_Closing
|
L'endpoint verrà chiuso in modo bidirezionale. |
kState_Connected
|
Endpoint connesso, pronto per tx/rx. |
kState_Connecting
|
Endpoint che tenta di connettersi. |
kState_Listening
|
Endpoint che riceve connessioni. |
kState_Ready
|
Endpoint inizializzato, ma non associato. |
kState_ReceiveShutdown
|
L'endpoint ha risposto a metà chiusura. |
kState_SendShutdown
|
L'endpoint ha avviato la chiusura a metà. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo di funzione di gestione degli eventi 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 OnConnectComplete
per elaborare gli eventi di creazione della connessione il giorno endPoint
. L'argomento err
distingue le connessioni riuscite da quelle non riuscite.
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 OnConnectionClosed
per elaborare gli eventi di terminazione della connessione il giorno endPoint
. L'argomento err
distingue le terminazioni riuscite dagli errori.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Tipo di funzione di gestione degli eventi di connessione ricevuta.
Fornisci una funzione di questo tipo al membro delegato OnConnectionReceived
per elaborare gli eventi di ricezione della connessione il giorno listeningEndPoint
. L'endpoint conEndPoint
appena ricevuto si trova sull'indirizzo IP peerAddr
e sulla 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 OnDataReceived
per elaborare gli eventi di ricezione dati su endPoint
, dove data
è il testo del messaggio ricevuto.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Un gestore di eventi di ricezione dati deve riconoscere i dati elaborati utilizzando il metodo AckReceive
. È necessario richiamare anche il metodo Free
sul buffer dei dati, a meno che non venga utilizzato PutBackReceivedData
.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Tipo di funzione di gestione degli eventi di trasmissione dati.
Fornisci una funzione di questo tipo al membro delegato OnDataSent
per elaborare gli eventi di trasmissione dati su endPoint
, dove len
è la lunghezza del testo del messaggio aggiunto alla finestra di trasmissione TCP, che è idonea per l'invio dallo stack di rete sottostante.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Tipo di funzione di gestione dell'evento di ricezione a metà chiusura.
Fornisci una funzione di questo tipo al membro delegato OnPeerClose
per elaborare gli eventi di terminazione della connessione il giorno endPoint
.
Dettagli | |||
---|---|---|---|
Parametri |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
Il tipo di funzione di gestione degli indicatori TCP SendIdle 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
Delegato della funzione di gestione dell'evento di accettazione della connessione dell'endpoint.
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
Delegato per la gestione della funzione dell'evento di creazione della connessione dell'endpoint.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
Delegato della funzione di gestione dell'evento di chiusura dell'endpoint.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
La connessione dell'endpoint riceve il delegato della funzione di gestione degli eventi.
OnDataReceived
OnDataReceivedFunct OnDataReceived
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 gestione dell'evento di trasmissione del testo dei messaggi dell'endpoint.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Il delegato della funzione di gestione degli eventi per la chiusura a metà dell'endpoint.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
Il delegato della funzione di gestione degli eventi della segnalazione dell'endpoint quando cambia il canale di invio di inattività della connessione TCP.
Viene utilizzato dai livelli superiori per intraprendere le azioni appropriate a seconda che i dati inviati siano stati inviati o meno 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 vengono inizializzati nello stato "pronto", quindi passano agli stati successivi corrispondenti a una semplificazione degli stati della macchina a stato di trasporto TCP.
Nota: l'enumerazione dello stato kBasisState_Closed
è mappata su kState_Ready
per motivi storici di compatibilità binaria. Il campo kState_Closed
esistente serve a identificare separatamente la distinzione tra "non ancora aperto" e "in precedenza aperto ora
chiuso" che esisteva in precedenza negli stati kState_Ready
e kState_Closed
.
Funzioni pubbliche
Interrompi
void Abort( void )
Chiudi l'endpoint in modo non corretto, ovvero 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
è maggiore del 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 )
Associare l'endpoint a un indirizzo IP di 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 )
Avvia la chiusura completa TCP, in altre parole, termina sia con l'invio che con la ricezione.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori restituiti |
|
Collega
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 )
Disattiva l'opzione "keep-alive" 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 connessi. Questo metodo non produce alcun effetto se i keepalive non sono stati abilitati sull'endpoint.
DisableReceive
void DisableReceive( void )
Disattiva ricezione.
Disattiva tutti i gestori di eventi. I dati inviati a un endpoint che disattiva la ricezione verranno confermati fino all'esaurimento della finestra di ricezione.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Attiva l'opzione TCP "keep-alive".
TCPEndPoint::AbilitaKeepAlive.
Inizia la trasmissione automatica dei segmenti del probe "keep-alive" TCP ogni interval
secondi. La connessione verrà interrotta 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 |
|
Vedi RFC 1122, sezione 4.2.3.6 per i dettagli sulle specifiche.
Attiva i probe keepalive TCP sulla connessione TCP associata.
Nota:questo metodo può essere chiamato solo quando l'endpoint si trova in uno degli stati connessi. Questo metodo può essere richiamato più volte per regolare l'intervallo keepalive o il conteggio del timeout.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay.
Disattiva l'algoritmo di buffering del traffico su TCP impostando le opzioni per il socket TCP_NORESULT.
EnableReceive
void EnableReceive( void )
Attiva la ricezione.
Attiva tutti i gestori di eventi. I dati inviati a un endpoint che disattiva la ricezione verranno confermati fino all'esaurimento della finestra di ricezione.
Senza costi
void Free( void )
Avvia (o continua) la chiusura completa del protocollo 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 i valori puntatore NULL
per nessuno degli 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 i valori puntatore NULL
per nessuno degli argomenti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
IsConnected
bool IsConnected( void ) const
Estrai se viene stabilita la connessione TCP.
Ascolta
INET_ERROR Listen( uint16_t backlog )
Prepara l'endpoint per ricevere messaggi TCP.
Se State
è già kState_Listening
, non viene eseguita alcuna operazione, altrimenti State
viene impostato su kState_Listening
e l'endpoint è preparato per i messaggi TCP ricevuti, in base alla semantica della piattaforma.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
Su alcune piattaforme, l'argomento backlog
non viene utilizzato (la profondità della coda è fissa; può essere accettata 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 )
Rileva l'attività, ossia reimposta il timer di inattività.
Reimposta il timer di inattività a zero.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Estrai la lunghezza dei dati ricevuti non confermati.
Dettagli | |
---|---|
Restituisce |
Numero di byte nella coda di ricezione che non sono stati ancora riconosciuti con
AckReceive(uint16_t len) . |
PendingSendLength
uint32_t PendingSendLength( void )
Estrai la lunghezza dei dati in attesa di prima trasmissione.
Dettagli | |
---|---|
Restituisce |
Numero di byte non trasmessi nella coda di trasmissione.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Spingi il testo del messaggio all'inizio della coda di ricezione.
Questo metodo può essere chiamato solo dai gestori di eventi di ricezione dati per reinserire una parte di dati non confermata 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 è l'elemento Weave::System::PacketBuffer
fornito al gestore o 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 il testo del messaggio sulla connessione TCP.
Il metodo Weave::System::PacketBuffer::Free
viene chiamato sull'argomento data
a prescindere dal fatto che la trasmissione sia riuscita o meno.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Imposta un timeout per consentire la riuscita di Connect o la restituzione di 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 il quale i dati trasmessi possono rimanere non confermati prima che TCP chiuda forzatamente la connessione corrispondente. Se il valore dell'opzione è 0, TCP utilizzerà l'impostazione predefinita di sistema. Per ulteriori dettagli, consulta RFC 5482.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
Imposta l'opzione del socket di timeout utente TCP.
Quando il valore è maggiore di 0, specifica la quantità massima di tempo in millisecondi durante il quale i dati trasmessi possono rimanere non confermati prima che TCP chiuda forzatamente la connessione corrispondente. Se il valore dell'opzione è 0, TCP utilizzerà il valore predefinito di sistema. Per ulteriori dettagli, consulta RFC 5482.
Nota:questo metodo può essere chiamato solo quando l'endpoint si trova in uno degli stati connessi. Questo metodo può essere richiamato più volte per regolare l'intervallo keepalive o il conteggio del timeout.
Arresto
INET_ERROR Shutdown( void )
Avvia TCP semitouso, in altre parole, terminato con l'invio.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori restituiti |
|