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{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
Definisce le azioni di connessione in entrata.

Definizione di tipo

otLinkedBuffer typedef
Una struttura di buffer collegata da utilizzare con TCP.
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
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) typedef
void(*
Questo callback indica che la connessione è stata interrotta e non deve più essere utilizzata oppure che una connessione è passata allo stato TIME-WAIT.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
Contiene argomenti per la funzione otTcpEndpointInitialize().
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
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) typedef
void(*
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 typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
Contiene argomenti alla funzione otTcpAscoltaInitialize().
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Questo callback indica il numero di byte disponibili per l'utilizzo dal buffer di ricezione.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
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 otTcpConnect().

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
[in] aListener
Il listener TCP che corrisponde alla connessione in entrata.
[in] aEndpoint
L'endpoint TCP in cui è stata accettata la connessione in entrata.
[in] aPeer
l'host e la porta da cui ha avuto origine la connessione in entrata.

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
[in] aListener
Il listener TCP che corrisponde alla connessione in entrata.
[in] aPeer
L'host e la porta da cui ha origine la connessione in entrata.
[out] aAcceptInto
L'endpoint TCP in cui accettare la connessione in entrata.
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
[in] aEndpoint
L'endpoint TCP la cui connessione è stata persa.
[in] aReason
Il motivo per cui la connessione è stata interrotta.

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
[in] aEndpoint
L'endpoint TCP la cui connessione è ora stabilita.

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
[in] aEndpoint
L'endpoint TCP per la connessione.
[in] aInSendBuffer
Il numero di byte nel buffer di invio (somma delle regioni "in-flight" e "backlog").
[in] aBacklog
Il numero di byte in coda per l'invio, ma non ancora inviati (la regione "backlog").

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
[in] aEndpoint
L'endpoint TCP per la connessione.
[in] aBytesAvailable
Il numero di byte nel buffer di ricezione della connessione.
[in] aEndOfStream
Indica se è possibile ricevere altri dati oltre a quelli già presenti nel buffer di ricezione della connessione.
[in] aBytesRemaining
Il numero di byte aggiuntivi che possono essere ricevuti prima che il buffer di ricezione diventi esaurito.

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
[in] aEndpoint
L'endpoint TCP per la connessione.
[in] aData
Un puntatore all'otLinkedBuffer che può essere recuperato.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'endpoint TCP da interrompere.
Valori restituiti
OT_ERROR_NONE
Interruzione della connessione dell'endpoint TCP.
OT_ERROR_FAILED
Impossibile interrompere la connessione dell'endpoint TCP.

OtTcpBind

otError otTcpBind(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName
)

Vincola l'endpoint TCP a una porta e a un indirizzo IP.

Dettagli
Parametri
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP da associare.
[in] aSockName
L'indirizzo e la porta a cui associare questo endpoint TCP.
Valori restituiti
OT_ERROR_NONE
Associazione dell'endpoint TCP riuscita.
OT_ERROR_FAILED
Impossibile associare l'endpoint TCP.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'endpoint TCP su cui ricevere i dati.
[in] aNumBytes
Il numero di byte consumati.
[in] aFlags
Contrassegni che specificano le opzioni per questa operazione (nessuna ancora).
Valori restituiti
OT_ERROR_NONE
Operazione di ricezione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione di ricezione.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP da connettere.
[in] aSockName
L'indirizzo IP e la porta dell'host a cui collegarsi.
[in] aFlags
Contrassegni che specificano le opzioni per questa operazione (vedi l'enumerazione sopra).
Valori restituiti
OT_ERROR_NONE
Operazione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP da inizializzare.
Valori restituiti
OT_ERROR_NONE
Deinizializzazione dell'endpoint TCP annullata.
OT_ERROR_FAILED
Impossibile annullare l'inizializzazione dell'endpoint TCP.

OtTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Permette di ottenere il puntatore al contesto associato a aEndpoint al momento dell'inizializzazione.

Dettagli
Parametri
[in] aEndpoint
L'endpoint TCP di cui ottenere il contesto.
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
[in] aEndpoint
L'endpoint TCP di cui ottenere l'istanza.
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
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aEndpoint
Un puntatore sulla struttura di un endpoint TCP.
[in] aArgs
Un puntatore a una struttura di argomenti.
Valori restituiti
OT_ERROR_NONE
Endpoint TCP aperto correttamente.
OT_ERROR_FAILED
Impossibile aprire l'endpoint TCP.

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
[in] aEndpoint
L'endpoint TCP di cui ottenere l'host e la porta locali.
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
[in] aEndpoint
L'endpoint TCP di cui ottenere l'host e la porta del peer.
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
[in] aListener
Un puntatore sulla struttura del listener TCP che dovrebbe iniziare l'ascolto.
[in] aSockName
L'indirizzo e la porta su cui ascoltare le connessioni in arrivo.
Valori restituiti
OT_ERROR_NONE
Avvio dell'ascolto del listener TCP riuscito.
OT_ERROR_FAILED
Impossibile avviare l'ascolto sul listener TCP.

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
[in] aListener
Un puntatore sulla struttura del listener TCP per l'inizializzazione.
Valori restituiti
OT_ERROR_NONE
Deinizializzazione del listener TCP riuscita.
OT_ERROR_FAILED
Impossibile annullare l'inizializzazione del listener TCP.

OtTcpAscoltaGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Permette di ottenere il puntatore al contesto associato a aListener al momento dell'inizializzazione.

Dettagli
Parametri
[in] aListener
Il listener TCP di cui ottenere il contesto.
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
[in] aListener
Il listener TCP di cui ottenere l'istanza.
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
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aListener
Un puntatore su una struttura di listener TCP.
[in] aArgs
Un puntatore a una struttura di argomenti.
Valori restituiti
OT_ERROR_NONE
Il listener TCP è stato aperto.
OT_ERROR_FAILED
Impossibile aprire il listener TCP.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'endpoint TCP su cui ricevere i dati.
[out] aBuffer
Un puntatore alla catena di buffer collegata che fa riferimento ai dati attualmente presenti nel buffer di ricezione.
Valori restituiti
OT_ERROR_NONE
Operazione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione.

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
[in] aEndpoint
Un puntatore sull'endpoint TCP il cui buffer di ricezione da riorganizzare.
Valori restituiti
OT_ERROR_NONE
Operazione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'endpoint TCP su cui inviare i dati.
[in] aNumBytes
Il numero di byte in base ai quali estendere la lunghezza del buffer collegato finale.
[in] aFlags
Contrassegni che specificano le opzioni per questa operazione (vedi l'enumerazione sopra).
Valori restituiti
OT_ERROR_NONE
Dati aggiunti correttamente al buffer di invio.
OT_ERROR_FAILED
Impossibile aggiungere i dati al buffer di invio.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'endpoint TCP su cui inviare i dati.
[in] aBuffer
Un puntatore alla catena di buffer collegata che fa riferimento ai dati da aggiungere al buffer di invio.
[in] aFlags
Contrassegni che specificano le opzioni per questa operazione (vedi l'enumerazione sopra).
Valori restituiti
OT_ERROR_NONE
Dati aggiunti correttamente al buffer di invio.
OT_ERROR_FAILED
Impossibile aggiungere i dati al buffer di invio.

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
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'endpoint TCP da arrestare.
Valori restituiti
OT_ERROR_NONE
La condizione per la trasmissione è stata messa in coda per la trasmissione.
OT_ERROR_FAILED
Impossibile mettere in coda la condizione "Fine del flusso" per la trasmissione.

OtTcpStopascolto

otError otTcpStopListening(
  otTcpListener *aListener
)

Consente a questo listener TCP di interrompere l'ascolto delle connessioni in entrata.

Dettagli
Parametri
[in] aListener
Un puntatore sulla struttura del listener TCP che dovrebbe interrompere l'ascolto.
Valori restituiti
OT_ERROR_NONE
L'ascolto del listener TCP è stato interrotto.
OT_ERROR_FAILED
Impossibile interrompere l'ascolto sul listener TCP.

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.