TCP
Questo modulo include funzioni che controllano la comunicazione TCP.
Riepilogo
Enumerazioni |
|
---|---|
anonymous enum
|
enum Definisce i flag trasmessi a otTcpConnect(). |
anonymous enum
|
enum Definisce i flag trasmessi a otTcpSendByReference . |
otTcpDisconnectedReason
|
enum |
otTcpIncomingConnectionAction{
|
enum Definisce le azioni di connessione in entrata. |
Definizione di tipo |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
Una struttura di buffer collegata da utilizzare con TCP. |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
Questo callback indica che la connessione TCP è ora pronta per la comunicazione bidirezionale. |
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
|
typedef Questo callback indica che è arrivata una connessione in entrata che corrisponde a questo listener TCP. |
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
|
typedefvoid(*
Questo callback indica che la connessione è stata interrotta e non deve più essere utilizzata oppure che una connessione è passata allo stato TIME-WAIT. |
otTcpDisconnectedReason
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
Contiene argomenti per la funzione otTcpEndpointInitialize(). |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
Questo callback indica all'applicazione che l'handshake TCP a 3 vie è completo e che la connessione è stata stabilita. |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
typedefvoid(*
Questo callback informa l'applicazione se sono stati compiuti progressi nel trasferimento dei dati dal buffer di invio al destinatario. |
otTcpIncomingConnectionAction
|
typedef Definisce le azioni di connessione in entrata. |
otTcpListener
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
Contiene argomenti alla funzione otTcpAscoltaInitialize(). |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
Questo callback indica il numero di byte disponibili per l'utilizzo dal buffer di ricezione. |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
Questo callback informa l'applicazione che i dati nel aData fornito sono stati riconosciuti dal peer di connessione e che aData e i dati che contiene possono essere recuperati dall'applicazione. |
Funzioni |
|
---|---|
otTcpAbort(otTcpEndpoint *aEndpoint)
|
Termina forzatamente la connessione TCP associata a questo endpoint TCP.
|
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
|
Vincola l'endpoint TCP a una porta e a un indirizzo IP.
|
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Informa lo stack TCP che l'applicazione ha terminato l'elaborazione dei
aNumBytes byte di dati all'inizio del buffer di ricezione e che lo stack TCP non deve continuare a mantenere quei byte nel buffer di ricezione. |
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
|
Registra l'host e la porta remoti per questa connessione.
|
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
|
Deinizializza questo endpoint TCP.
|
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
|
void *
Permette di ottenere il puntatore al contesto associato a
aEndpoint al momento dell'inizializzazione. |
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
|
Visualizza l'otInstance associata a
aEndpoint al momento dell'inizializzazione. |
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
|
Inizializza un endpoint TCP.
|
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Permette di ottenere il puntatore sull'host e sulla porta locali di un endpoint TCP.
|
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Permette di ottenere un puntatore sull'host e sulla porta del peer di un endpoint TCP.
|
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
|
fa sì che le chiamate in entrata al TCP che corrispondono all'indirizzo IP e alla porta specificati attivino i callback di questo listener TCP.
|
otTcpListenerDeinitialize(otTcpListener *aListener)
|
Deinizializza questo listener TCP.
|
otTcpListenerGetContext(otTcpListener *aListener)
|
void *
Permette di ottenere il puntatore al contesto associato a
aListener al momento dell'inizializzazione. |
otTcpListenerGetInstance(otTcpListener *aListener)
|
Visualizza l'otInstance associata a
aListener al momento dell'inizializzazione. |
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
|
Inizializza un listener TCP.
|
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
|
Fornisce all'applicazione una catena di buffer collegata che fa riferimento ai dati attualmente presenti nel buffer di ricezione TCP.
|
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
|
Riorganizza il buffer di ricezione in modo che sia contiguo in memoria.
|
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Aggiunge dati al buffer di invio estendendo la lunghezza dell'ultimo otLinkedBuffer dell'importo nel buffer di invio.
|
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
|
Aggiunge i dati a cui fa riferimento il buffer collegato a cui
aBuffer rimanda al buffer di invio. |
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
|
Informa il peer di connessione che questo endpoint TCP non invierà altri dati.
|
otTcpStopListening(otTcpListener *aListener)
|
Consente a questo listener TCP di interrompere l'ascolto delle connessioni in entrata.
|
Strutture |
|
---|---|
otLinkedBuffer |
Una struttura di buffer collegata da utilizzare con TCP. |
Endpoint otTcp |
Rappresenta un endpoint TCP. |
otTcpEndpointInitializeArgs |
Contiene argomenti per la funzione otTcpEndpointInitialize(). |
otTcpascolto |
Rappresenta un listener TCP. |
otTcp listenerInitializeArgs |
Contiene argomenti alla funzione otTcpAscoltaInitialize(). |
Enumerazioni
enumerazione anonima
anonymous enum
Definisce i flag trasmessi a otTcpSendByReference
.
otTcpScollegatoMotivo
otTcpDisconnectedReason
otTcpInboundConnectionAction
otTcpIncomingConnectionAction
Definisce le azioni di connessione in entrata.
Questo viene utilizzato nel callback otTcpAcceptReady().
Proprietà | |
---|---|
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT
|
Accetta la connessione in entrata. |
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER
|
Rimanda (ignorare) la connessione in entrata. |
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
|
Rifiutare la connessione in entrata. |
Definizione di tipo
Buffer collegato
struct otLinkedBuffer otLinkedBuffer
Una struttura di buffer collegata da utilizzare con TCP.
Una singola struttura otLinkedBuffer fa riferimento a un array di byte in memoria, tramite mData e mLength. Il campo mNext viene utilizzato per formare una catena di strutture otLinkedBuffer.
otTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
Questo callback indica che la connessione TCP è ora pronta per la comunicazione bidirezionale.
Nel caso di TCP Fast Open, questo potrebbe essere precedente al completamento dell'handshake della connessione TCP. L'applicazione fornisce i puntatori di contesto sia per il listener TCP che ha accettato la connessione sia per l'endpoint TCP in cui è stata accettata. Il contesto fornito è quello associato al listener TCP.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
OtTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
Questo callback indica che è arrivata una connessione in entrata che corrisponde a questo listener TCP.
La risposta tipica è che l'applicazione accetti la connessione in entrata. Per farlo, compila aAcceptInto
con un puntatore sull'otTcpEndpoint in cui accettare la connessione in entrata. Questo otTcpEndpoint deve essere già inizializzato utilizzando otTcpEndpointInitialize(). Quindi, l'applicazione restituisce OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT.
In alternativa, l'applicazione può rifiutare la connessione in entrata. L'applicazione può farlo in due modi. Innanzitutto, se l'applicazione restituisce OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread ignora in silenzio la richiesta di configurazione della connessione; è probabile che il peer di connessione trasmetta nuovamente la richiesta, dopodiché il callback verrà richiamato. Ciò è utile se le risorse non sono attualmente disponibili per accettare la connessione, ma potrebbero essere disponibili quando il peer di connessione ritrasmette il tentativo di connessione. In secondo luogo, se l'applicazione restituisce OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, OpenThread invia un messaggio "connessione rifiutata" all'host che ha tentato di stabilire una connessione. Se l'applicazione rifiuta la connessione in entrata, non è necessario inserire aAcceptInto
.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Restituisce |
Descrizione di come gestire la connessione in entrata.
|
OtTcpDisconnesso
void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
Questo callback indica che la connessione è stata interrotta e non deve più essere utilizzata oppure che una connessione è passata allo stato TIME-WAIT.
Può verificarsi se un tentativo di creazione di una connessione (avviato chiamando otTcpConnect()) non riesce o in un qualsiasi momento successivo (ad esempio, se la connessione scade o viene ricevuto un segmento RST dal peer di connessione). Una volta attivato il callback, è possibile recuperare tutte le risorse fornite dall'applicazione per questa connessione (ovvero qualsiasi otLinkedBuffers
e la memoria a cui fa riferimento, ma non l'endpoint TCP o lo spazio per i buffer di ricezione). Nel caso di una connessione che entra nello stato TIME-WAIT, questo callback viene chiamato due volte, una volta allo stato TIME-WAIT (con OT_TCP_DISCONNECTED_REASON_TIME_WAIT e di nuovo quando scade lo stato TIME-WAIT (con OT_TCP_DISCONNECTED_REASON_NORMAL).
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
otTcpScollegatoMotivo
enum otTcpDisconnectedReason otTcpDisconnectedReason
Endpoint CPA
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
Contiene argomenti per la funzione otTcpEndpointInitialize().
OtTcpEstablished
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
Questo callback indica all'applicazione che l'handshake TCP a 3 vie è completo e che la connessione è stata stabilita.
Dettagli | |||
---|---|---|---|
Parametri |
|
OtTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
Questo callback informa l'applicazione se sono stati compiuti progressi nel trasferimento dei dati dal buffer di invio al destinatario.
Questo callback non è necessario per un corretto funzionamento di TCP. La maggior parte delle applicazioni può utilizzare solo il callback otTcpSendDone() per recuperare i buffer collegati una volta completato l'utilizzo dello stack TCP. Lo scopo di questo callback è supportare le applicazioni avanzate che traggono vantaggio da informazioni più dettagliate su come la connessione fa progressi verso il trasferimento dei dati al peer di connessione.
L'operazione di callback è strettamente collegata al buffer di invio di TCP. È possibile capire che il buffer di invio abbia due regioni. La prima è la regione "in-flight" all'inizio del buffer di invio. Corrisponde ai dati che sono stati inviati al destinatario, ma non sono ancora stati confermati. La seconda è la regione "backlog", che consiste di tutti i dati nel buffer di invio che non si trovano nella regione "in-flight". La regione "backlog" corrisponde ai dati in coda per l'invio, ma non sono stati ancora inviati.
Il callback viene richiamato in risposta a due tipi di eventi. Innanzitutto, la regione "in corso" del buffer di invio potrebbe ridursi (ad esempio, quando il destinatario conferma i dati inviati in precedenza). In secondo luogo, la regione "backlog" del buffer di invio potrebbe ridursi (ad esempio, sono stati inviati nuovi dati). Queste due condizioni spesso si presentano contemporaneamente, in risposta a un segmento ACK del peer di connessione, motivo per cui vengono combinate in un unico callback.
Lo stack TCP utilizza solo i aInSendBuffer
byte alla coda del buffer di invio; quando aInSendBuffer
diminuisce di una quantità x, significa che x byte aggiuntivi che prima erano all'inizio del buffer di invio non fanno più parte del buffer di invio e possono ora essere recuperati (ovvero sovrascritti) dall'applicazione. Tieni presente che la struttura di otLinkedBuffer può essere recuperata solo una volta che tutti i byte a cui fa riferimento non fanno più parte del buffer di invio.
Il callback assume il livello otTcpSendDone(), nel seguente modo: le applicazioni possono determinare quando è possibile recuperare i buffer collegati confrontando aInSendBuffer
con il numero di byte presenti in ogni buffer collegato. Tuttavia, ci aspettiamo che otTcpSendDone(), che indica direttamente quali otLinkedBuffers possono essere recuperati, sia molto più semplice da utilizzare. Se entrambi i callback vengono registrati e vengono attivati dallo stesso evento (ad esempio, lo stesso segmento ACK ricevuto), viene attivato prima il callback otTcpSendDone(), seguito da questo callback.
Inoltre, questo callback fornisce aBacklog
, che indica quanti byte di dati nel buffer di invio non sono ancora in corso. Per le applicazioni che vogliono aggiungere dati al buffer di invio solo quando è certo che verranno inviate a breve, è opportuno inviare dati solo quando aBacklog
è abbastanza piccolo (0 o vicino a 0). Ad esempio, un'applicazione può utilizzare aBacklog
in modo che possa reagire alla creazione di code eliminando o aggregando i dati per evitare di creare un backlog di dati.
Dopo una chiamata a otTcpSendByReference() o otTcpSendByExtension() con un numero di byte positivo, il callback otTcpForwardProgress() viene chiamato per indicare quando vengono inviati i byte aggiunti al buffer di invio. La chiamata a otTcpForwardProgress() può essere effettuata subito dopo l'aggiunta dei byte al buffer di invio (se alcuni di questi vengono inviati immediatamente, riducendo il backlog) o in futuro (una volta che la connessione invia alcuni o tutti i dati, riducendo il backlog). Con "immediatamente" si intende che il callback viene pianificato immediatamente per l'esecuzione in un'attività. Per evitare problemi legati alla recessione, il callback otTcpForwardProgress() non viene mai chiamato direttamente dalle funzioni otTcpSendByReference() o otTcpSendByExtension().
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
otTcpInboundConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
Definisce le azioni di connessione in entrata.
Questo viene utilizzato nel callback otTcpAcceptReady().
OtTcpAscolta
struct otTcpListener otTcpListener
otTcpAscoltaInizializzaArgs
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
Contiene argomenti alla funzione otTcpAscoltaInitialize().
OtTcpRicezioneDisponibile
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
Questo callback indica il numero di byte disponibili per l'utilizzo dal buffer di ricezione.
Viene chiamato ogni volta che vengono aggiunti byte al buffer di ricezione e quando viene raggiunta la fine del flusso. Se è stata raggiunta la fine dello stream (ovvero se non saranno disponibili altri dati da leggere perché il peer della connessione ha chiuso la sua connessione per la scrittura), aEndOfStream
è true. Infine, aBytesRemaining
indica la quantità di capacità rimasta nel buffer di ricezione per contenere altri dati in arrivo.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
Questo callback informa l'applicazione che i dati nel aData
fornito sono stati riconosciuti dal peer di connessione e che aData
e i dati che contiene possono essere recuperati dall'applicazione.
È garantito che gli attributi aData
siano identici a quelli trasmessi a TCP tramite otTcpSendByReference(), incluse eventuali estensioni effettuate tramite otTcpSendByExtension().
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Funzioni
OtTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
Termina forzatamente la connessione TCP associata a questo endpoint TCP.
In questo modo, l'endpoint TCP è senza costi e utilizzabile per un'altra connessione e svuota i buffer di invio e ricezione, trasferendo la proprietà dei dati forniti dall'applicazione in otTcpSendByReference() e otTcpSendByExtension() richiamando l'applicazione. I callback e la memoria dell'endpoint TCP per il buffer di ricezione rimangono associati all'endpoint TCP.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
OtTcpBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
Vincola l'endpoint TCP a una porta e a un indirizzo IP.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
otTcpCommitRicezione
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Informa lo stack TCP che l'applicazione ha terminato l'elaborazione dei aNumBytes
byte di dati all'inizio del buffer di ricezione e che lo stack TCP non deve continuare a mantenere quei byte nel buffer di ricezione.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
OtTcpConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
Registra l'host e la porta remoti per questa connessione.
TCP Fast Open deve essere abilitato o disabilitato utilizzando aFlags
. Se viene disabilitato, l'handshake della connessione TCP viene avviato immediatamente. Se è abilitata, questa funzione si limita a registrare l'host e la porta remoti e l'handshake per la connessione TCP si verifica solo alla prima chiamata a otTcpSendByReference()
.
Se TCP Fast Open è disattivato, il chiamante deve attendere il callback otTcpEstablished
che indica che l'handshake della connessione TCP è stato eseguito prima di poter iniziare a inviare dati, ad esempio chiamando otTcpSendByReference()
.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
otTcpEndpointDeiniziaizzazione
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
Deinizializza questo endpoint TCP.
Ciò significa che OpenThread non tiene più traccia di questo endpoint TCP e alloca tutte le risorse allocate internamente per questo endpoint TCP. L'applicazione può riutilizzare la memoria che supporta l'endpoint TCP come ritiene opportuno.
Se corrisponde a una connessione TCP attiva, la connessione viene terminata in modo non cerebrale (come in otTcpAbort()). Tutte le risorse fornite dall'applicazione per questo endpoint TCP (buffer collegati per il buffer di invio, la memoria per il buffer di ricezione, la struttura aEndpoint
stessa e così via) vengono restituite immediatamente all'applicazione.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
OtTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
Permette di ottenere il puntatore al contesto associato a aEndpoint
al momento dell'inizializzazione.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
Il puntatore di contesto associato a
aEndpoint . |
OtTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
Visualizza l'otInstance associata a aEndpoint
al momento dell'inizializzazione.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
Il puntatore otInstance associato a
aEndpoint . |
OtTcpEndpointInitialize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
Inizializza un endpoint TCP.
Quando chiami questa funzione, OpenThread tiene traccia dell'endpoint TCP e memorizza e recupera i dati TCP all'interno di aEndpoint
. L'applicazione non deve accedere o modificare direttamente i campi in aEndpoint
. Se l'applicazione deve rivendicare la memoria di aEndpoint
, deve chiamare otTcpEndpointDeInitialize().
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
OtTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
Permette di ottenere il puntatore sull'host e sulla porta locali di un endpoint TCP.
I contenuti dell'host e della porta potrebbero essere inattivi se questo socket non è in uno stato connesso e non è stato associato dopo la sua ultima disconnessione.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
L'host e la porta locali di
aEndpoint . |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
Permette di ottenere un puntatore sull'host e sulla porta del peer di un endpoint TCP.
I contenuti dell'host e della porta potrebbero essere inattivi se questo socket non è connesso.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
L'host e la porta del peer di connessione di
aEndpoint . |
OtTcpAscolta
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
fa sì che le chiamate in entrata al TCP che corrispondono all'indirizzo IP e alla porta specificati attivino i callback di questo listener TCP.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
otTcpAscoltaDeinizializzazione
otError otTcpListenerDeinitialize( otTcpListener *aListener )
Deinizializza questo listener TCP.
Ciò significa che OpenThread non tiene più traccia di questo listener TCP e alloca tutte le risorse allocate internamente per questo listener TCP. L'applicazione può riutilizzare la memoria che supporta il listener TCP come ritiene opportuno.
Se il listener TCP è in ascolto, interrompe l'ascolto.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
OtTcpAscoltaGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
Permette di ottenere il puntatore al contesto associato a aListener
al momento dell'inizializzazione.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
Il puntatore di contesto associato a
aListener . |
otTcpAscoltaGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
Visualizza l'otInstance associata a aListener
al momento dell'inizializzazione.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
Il puntatore otInstance associato a
aListener . |
OtTcpascoltoInizializza
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
Inizializza un listener TCP.
Quando chiami questa funzione, OpenThread tiene traccia del listener TCP e memorizza e recupera i dati TCP all'interno di aListener
. L'applicazione non deve accedere o modificare direttamente i campi in aListener
. Se l'applicazione deve recuperare il supporto della memoria aListener
, deve chiamare otTcpAscoltaDeiniziaize().
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
OtTcpInviteByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
Fornisce all'applicazione una catena di buffer collegata che fa riferimento ai dati attualmente presenti nel buffer di ricezione TCP.
La catena di buffer collegata è valida fino a quando non viene richiamata la richiamata di "ricezione pronta" o fino alla chiamata successiva a otTcpReceivedContiguify() o otTcpCommitRicezione().
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
OtTcpGetContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
Riorganizza il buffer di ricezione in modo che sia contiguo in memoria.
Questo passaggio è facoltativo; un'applicazione può semplicemente attraversare la catena di buffer collegata ottenuto chiamando otTcpReceiveByReference
. Alcune applicazioni potrebbero voler chiamare questa funzione per rendere contigua il buffer di ricezione per semplificare l'elaborazione dei dati, ma questo va a scapito del tempo di CPU per riorganizzare i dati nel buffer di ricezione.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Aggiunge dati al buffer di invio estendendo la lunghezza dell'ultimo otLinkedBuffer dell'importo nel buffer di invio.
Se il buffer di invio è vuoto, l'operazione non riesce.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
OtTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
Aggiunge i dati a cui fa riferimento il buffer collegato a cui aBuffer
rimanda al buffer di invio.
Al completamento di una chiamata a questa funzione, il buffer collegato e i dati a cui fa riferimento appartengono allo stack TCP; non devono essere modificati dall'applicazione fino a quando un callback "send done" non restituisce la proprietà di tali oggetti all'applicazione. È possibile chiamare questa funzione per aggiungere un altro buffer collegato alla coda di invio, anche se il callback "invio completato" per una chiamata precedente a questa funzione non è stato ancora attivato.
Tieni presente che aBuffer
non deve essere concatenato; il suo campo mNext deve essere NULL. Se altri dati verranno aggiunti subito dopo questa chiamata, il flag OT_TCP_SEND_MORE_TO_COME dovrebbe essere usato come suggerimento per l'implementazione TCP.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
OtTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
Informa il peer di connessione che questo endpoint TCP non invierà altri dati.
Deve essere utilizzato quando l'applicazione non ha più dati da inviare al peer della connessione. Per questa connessione, le letture future sul peer di connessione avranno come condizione "fine del flusso" e le scritture future su questo endpoint di connessione avranno esito negativo.
La condizione "fine del flusso" si applica solo dopo che il peer di connessione ha ricevuto tutti i dati forniti in precedenza allo stack TCP da inviare.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
OtTcpStopascolto
otError otTcpStopListening( otTcpListener *aListener )
Consente a questo listener TCP di interrompere l'ascolto delle connessioni in entrata.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
Macro
OT_TCP_ENDPOINT_TCB_NUM_PTR
OT_TCP_ENDPOINT_TCB_NUM_PTR 36
OT_TCP_ENDPOINT_TCB_SIZE_BASE
OT_TCP_ENDPOINT_TCB_SIZE_BASE 392
I valori OT_TCP_ENDPOINT_TCB_SIZE_BASE e OT_TCP_ENDPOINT_TCB_NUM_POINTERS vengono scelti in modo che il campo mTcb di otTcpEndpoint abbia le stesse dimensioni dello struct tcpcb in TCPlp.
Questo è necessario perché il campo mTcb, sebbene nella sua dichiarazione è opaco, viene considerato come struct tcpcb nell'implementazione TCP.
OT_TCP_LISTENER_TCB_NUM_PTR
OT_TCP_LISTENER_TCB_NUM_PTR 3
OT_TCP_LISTENER_TCB_SIZE_BASE
OT_TCP_LISTENER_TCB_SIZE_BASE 16
I valori OT_TCP_LISTENER_TCB_SIZE_BASE e OT_TCP_LISTENER_TCB_NUM_POINTERS vengono scelti in modo che il campo mTcb listener di otTcpAscolta abbia le stesse dimensioni dello struct tcpcb_listen in TCPlp.
Questo è necessario perché il campo mTcbAscolta, nonostante la dichiarazione sia opaca, viene considerato come struct tcpcb nell'implementazione TCP.
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598
Buffer consigliato per le connessioni TCP che attraversano massimo 3 hop wireless.
Sulle piattaforme in cui la memoria è particolarmente limitata e in situazioni in cui la larghezza di banda elevata non è necessaria, può essere utile selezionare manualmente una dimensione buffer più piccola.
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157
Buffer consigliato per le connessioni TCP che attraversano molti hop wireless.
Se la connessione TCP attraversa un numero molto elevato di hop (più di 6 circa), potrebbe essere consigliabile selezionare manualmente un buffer di grandi dimensioni.
Risorse
Gli argomenti di riferimento per l'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per maggiori informazioni o per contribuire alla nostra documentazione, consulta Risorse.