Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

TCP

Questo modulo include funzioni che controllano la comunicazione TCP.

Riepilogo

Enumerazioni

anonymous enum enum
Questa enumerazione definisce i flag passati a otTcpConnect().
anonymous enum enum
Questa enumerazione 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
Questa enumerazione definisce le azioni di connessione in entrata.

Defdef

otLinkedBuffer tipodef
Una struttura di buffer collegata da utilizzare con TCP.
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) tipodef
void(*
Questo callback indica che la connessione TCP è ora pronta per la comunicazione bidirezionale.
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) tipodef
Questo callback indica che è arrivata una connessione in entrata che corrisponde a questo listener TCP.
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) tipodef
void(*
Questo callback indica che la connessione è stata interrotta e non deve più essere utilizzata, oppure che la connessione è entrata nello stato TIME-WAIT.
otTcpDisconnectedReason tipodef
enum otTcpDisconnectedReason
otTcpEndpoint tipodef
struct otTcpEndpoint
otTcpEndpointInitializeArgs tipodef
Questa struttura contiene argomenti per la funzione otTcpEndpointInitialize().
otTcpEstablished)(otTcpEndpoint *aEndpoint) tipodef
void(*
Questo callback informa l'applicazione che l'handshake a 3 vie TCP è completo e che la connessione è ora stabilita.
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) tipodef
void(*
Questo callback informa l'applicazione se sono stati fatti progressi nel trasferimento dei dati dal buffer di invio al destinatario.
otTcpIncomingConnectionAction tipodef
Questa enumerazione definisce le azioni di connessione in entrata.
otTcpListener tipodef
struct otTcpListener
otTcpListenerInitializeArgs tipodef
Questa struttura contiene argomenti per la funzione otTcpListenerInitialize().
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) tipodef
void(*
Questo callback indica il numero di byte disponibili per il consumo dal buffer di ricezione.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) tipodef
void(*
Questo callback informa l'applicazione che i dati nel aData fornito sono stati confermati dal peer di connessione e che aData e i dati che contiene possono essere rivendicati dall'applicazione.

Functions

otTcpAbort(otTcpEndpoint *aEndpoint)
Termina forzatamente la connessione TCP associata a questo endpoint TCP.
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
associare 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 completato l'elaborazione di aNumBytes byte di dati all'inizio del buffer di ricezione e che lo stack TCP non deve continuare a mantenere tali byte nel buffer di ricezione.
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
Registra l'host remoto e la porta per questa connessione.
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
Deinizializza questo endpoint TCP.
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
Permette di ottenere il puntatore di contesto associato all'elemento aEndpoint al momento dell'inizializzazione.
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
Permette di ottenere 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 *
Ottieni un puntatore sull'host locale e sulla porta di un endpoint TCP.
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
Ottieni un puntatore sull'host e sulla porta del peer TCP.
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
Causa le connessioni TCP in arrivo che corrispondono all'indirizzo IP e alla porta specificati per attivare i callback del listener TCP.
otTcpListenerDeinitialize(otTcpListener *aListener)
Deinizializza questo listener TCP.
otTcpListenerGetContext(otTcpListener *aListener)
void *
Permette di ottenere il puntatore di contesto associato all'elemento aListener al momento dell'inizializzazione.
otTcpListenerGetInstance(otTcpListener *aListener)
Permette di ottenere 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 completamente contiguo in memoria.
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Aggiunge i dati al buffer di invio estendendo la lunghezza dell'ultimo otLinkedBuffer nel buffer di invio in base alla quantità specificata.
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
Aggiunge i dati a cui fa riferimento il buffer collegato puntato da aBuffer al buffer di invio.
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
Comunica al peer di connessione che questo endpoint TCP non invierà altri dati.
otTcpStopListening(otTcpListener *aListener)
Causa l'interruzione dell'ascolto di queste connessioni in arrivo da parte del listener TCP.

Strutture

otLinkedBuffer

Una struttura di buffer collegata da utilizzare con TCP.

OtTcpEndpoint

Questa struttura rappresenta un endpoint TCP.

otTcpEndpointInitializeArgs

Questa struttura contiene argomenti per la funzione otTcpEndpointInitialize().

otTcpListener

Questa struttura rappresenta un listener TCP.

otTcpListenerInitializeArgs

Questa struttura contiene argomenti per la funzione otTcpListenerInitialize().

Enumerazioni

enumerazione anonima

 anonymous enum

Questa enumerazione definisce i flag passati a otTcpConnect().

enumerazione anonima

 anonymous enum

Questa enumerazione definisce i flag trasmessi a otTcpSendByReference.

OtTcpDisconnetti

 otTcpDisconnectedReason

otTcpConnectionConnectionAction

 otTcpIncomingConnectionAction

Questa enumerazione definisce le azioni di connessione in entrata.

Questo viene utilizzato nel callback otTcpAcceptReady().

Proprietà
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Accetta la connessione in arrivo.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

Posticipa (ignora in silenzio) la connessione in entrata.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Rifiuta la connessione in entrata.

Defdef

OtLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

Una struttura di buffer collegata da utilizzare con TCP.

Una singola struttura di 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.

OtTcpAccetta foto completata

void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)

Questo callback indica che la connessione TCP è ora pronta per la comunicazione bidirezionale.

Nel caso dell'apertura rapida TCP, l'errore potrebbe essere precedente al completamento dell'handshake della connessione TCP. L'applicazione è dotata dei 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

otTcpAccettaReady

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 accetta la connessione in entrata. Per farlo, compila aAcceptInto con un puntatore su otTcpEndpoint in cui accettare la connessione in entrata. Questo otTcpEndpoint deve essere già inizializzato utilizzando otTcpEndpointInitialize(). Successivamente, l'applicazione restituisce OT_TCP_INCOMING_CONNECTION_ACTION_accept.

In alternativa, l'applicazione può rifiutare di accettare la connessione in entrata. Esistono due modi per farlo. Innanzitutto, se l'applicazione restituisce OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread ignora la richiesta di connessione; il peer di connessione probabilmente trasmetterà nuovamente la richiesta, dopodiché verrà richiamato il callback. Questo dato è particolarmente utile se le risorse non sono attualmente disponibili per accettare la connessione, ma potrebbero esserlo 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 è necessaria per completare 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.

OtTcpDisconnetti

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

Questo callback indica che la connessione è stata interrotta e non deve più essere utilizzata, oppure che la connessione è entrata nello stato TIME-WAIT.

Questo messaggio di errore può verificarsi se un tentativo di creazione della connessione (avviato chiamando la funzione otTcpConnect()) non riesce o in un momento successivo (ad es. se la connessione scade o viene ricevuto un segmento RST dal peer di connessione). Una volta attivato questo callback, puoi recuperare tutte le risorse fornite dall'applicazione per questa connessione (ovvero tutti i valori otLinkedBuffers e la memoria a cui fanno 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, questa richiamata viene chiamata due volte, una volta all'ingresso dello stato TIME-WAIT (con OT_TCP_DISCONNECTED_REASON_TIME_WAIT e nuovamente alla scadenza dello stato di 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.

OtTcpDisconnetti

enum otTcpDisconnectedReason otTcpDisconnectedReason

EndpointTTCP

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

Questa struttura contiene argomenti per la funzione otTcpEndpointInitialize().

OtTcpStabilito

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Questo callback informa l'applicazione che l'handshake a 3 vie TCP è completo e che la connessione è ora stabilita.

Dettagli
Parametri
[in] aEndpoint
L'endpoint TCP la cui connessione è ora stabilita.

ttcpInoltra

void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)

Questo callback informa l'applicazione se sono stati fatti 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ò fare affidamento sul callback otTcpSendDone() per recuperare i buffer collegati una volta completato l'utilizzo dello stack TCP. Lo scopo di questo callback è supportare applicazioni avanzate che beneficiano di informazioni più dettagliate su come la connessione avanza nel trasferimento dei dati al peer di connessione.

L'operazione di callback è strettamente collegata al buffer di invio di TCP. Si può capire che il buffer di invio ha due aree geografiche. Il primo è l'area "in-flight" che si trova in cima al buffer di invio. Corrisponde ai dati inviati al destinatario, ma non ancora riconosciuti. In secondo luogo, c'è l'area "backlog" che comprende tutti i dati del buffer di invio che non si trovano nell'area "in-flight". L'area geografica "backlog" corrisponde ai dati in coda per l'invio, ma non ancora inviati.

Il callback viene richiamato in risposta a due tipi di eventi. Innanzitutto, la zona "in-flight" potrebbe essere ridotta (ad esempio, quando il destinatario riconosce i dati che abbiamo inviato in precedenza). In secondo luogo, l'area "backlog" della zona del buffer di invio potrebbe ridursi (ad es., nuovi dati inviati). Queste due condizioni spesso si verificano contemporaneamente, in risposta a un segmento ACK dal peer di connessione, motivo per cui vengono combinate in un unico callback.

Lo stack TCP utilizza solo i byte aInSendBuffer alla coda del buffer di invio; quando aInSendBuffer diminuisce di un importo 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 essere reintegrati (ovvero sovrascritti) dall'applicazione. Tieni presente che la struttura otLinkedBuffer può essere recuperata solo una volta che tutti i byte a cui fa riferimento non fanno più parte del buffer di invio.

Questo callback supporta otTcpSendDone(), nel seguente modo: le applicazioni possono determinare quando è possibile ripristinare 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 possano essere rivendicati, sia molto più semplice da utilizzare. Se entrambi i callback sono 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 il numero di byte di dati nel buffer di invio non ancora in corso. Per le applicazioni che vogliono aggiungere dati al buffer di invio solo quando è la certezza che verranno inviati a breve, potrebbe essere preferibile inviare dati solo quando aBacklog è sufficientemente piccolo (0 o vicino a 0). Ad esempio, un'applicazione potrebbe utilizzare aBacklog in modo che possa reagire all'accumulo 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, viene garantita la chiamata del callback otTcpForwardProgress() per indicare quando i byte aggiunti al buffer di invio vengono inviati. La chiamata a otTcpForwardProgress() può essere eseguita subito dopo l'aggiunta dei byte al buffer di invio (se alcuni di questi vengono inviati immediatamente, riducendo il backlog), oppure in un secondo momento (una volta che la connessione invia alcuni o tutti i dati, riducendo il backlog). Per "immediatamente", intendiamo che il callback viene pianificato immediatamente per l'esecuzione in un tasklet; per evitare complessità correlata alla reentrancy, 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 aree geografiche "in-flight" e "backlog".
[in] aBacklog
Il numero di byte in coda per l'invio, ma non ancora inviati (l'area geografica "backlog").

otTcpConnectionConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Questa enumerazione definisce le azioni di connessione in entrata.

Questo viene utilizzato nel callback otTcpAcceptReady().

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

Questa struttura contiene argomenti per la funzione otTcpListenerInitialize().

OtTcpReceiveAvailable

void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)

Questo callback indica il numero di byte disponibili per il consumo 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 (ad esempio, se non ci saranno più dati disponibili per la lettura perché il peer di connessione ha chiuso l'estremità della connessione per scrivere), il valore 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 nella connessione a buffer.
[in] aEndOfStream
Indica se è possibile ricevere dati aggiuntivi oltre a quelli già presenti nel buffer di connessione.
[in] aBytesRemaining
Numero di byte aggiuntivi che possono essere ricevuti prima che il buffer di ricezione diventi completo.

OtTcpSendDone

void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)

Questo callback informa l'applicazione che i dati nel aData fornito sono stati confermati dal peer di connessione e che aData e i dati che contiene possono essere rivendicati dall'applicazione.

È garantito che gli attributi aData siano identici a quelli trasmessi a TCP tramite otTcpSendByReference(), comprese le estensioni effettuate tramite otTcpSendByExtension().

Dettagli
Parametri
[in] aEndpoint
L'endpoint TCP per la connessione.
[in] aData
Un puntatore all'otLinkedBuffer che può essere recuperato.

Functions

OtTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Termina forzatamente la connessione TCP associata a questo endpoint TCP.

In questo modo l'endpoint TCP è subito disponibile per l'utilizzo per un'altra connessione e il buffer di invio e ricezione viene svuotato e viene trasferita la proprietà di qualsiasi dato fornito dall'applicazione nelle chiamate otTcpSendByReference() e otTcpSendByExtension(). I callback dell'endpoint TCP e la memoria per il buffer di ricezione rimangono associati all'endpoint TCP.

Dettagli
Parametri
[in] aEndpoint
Un puntatore sulla struttura dell'endpoint TCP che rappresenta l'interruzione dell'endpoint TCP.
Valori di ritorno
OT_ERROR_NONE
Interruzione della connessione dell'endpoint TCP riuscita.
OT_ERROR_FAILED
Impossibile interrompere la connessione dell'endpoint TCP.

OtTcpBind

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

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

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla struttura dell'endpoint TCP da associare.
[in] aSockName
L'indirizzo e la porta a cui associare questo endpoint TCP.
Valori di ritorno
OT_ERROR_NONE
Collegamento dell'endpoint TCP riuscito.
OT_ERROR_FAILED
Impossibile associare l'endpoint TCP.

otTcpCommitReceive

otError otTcpCommitReceive(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Informa lo stack TCP che l'applicazione ha completato l'elaborazione di aNumBytes byte di dati all'inizio del buffer di ricezione e che lo stack TCP non deve continuare a mantenere tali byte nel buffer di ricezione.

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla struttura dell'endpoint TCP che rappresenta l'endpoint TCP su cui ricevere i dati.
[in] aNumBytes
Il numero di byte consumati.
[in] aFlags
Flag che specificano le opzioni per questa operazione (nessuna ancora).
Valori di ritorno
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 remoto e la porta per questa connessione.

Per impostazione predefinita, viene utilizzata l'apertura rapida TCP. Ciò significa che questa funzione registra soltanto l'host remoto e la porta. Inoltre, l'handshake di connessione TCP viene eseguita solo alla prima chiamata a otTcpSendByReference(). L'apertura rapida del collegamento TCP può essere disabilitata esplicitamente utilizzando aFlags, nel qual caso viene avviata immediatamente l'handshake di connessione TCP.

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla struttura dell'endpoint TCP da connettere.
[in] aSockName
L'indirizzo IP e la porta dell'host a cui connettersi.
[in] aFlags
Flag che specificano le opzioni disponibili per questa operazione (vedi l'enumerazione qui sopra).
Valori di ritorno
OT_ERROR_NONE
Operazione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione.

Inizializzazione otTcpEndpointDe

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

Deinizializza questo endpoint TCP.

Ciò significa che OpenThread non monitora più questo endpoint TCP e alloca tutte le risorse assegnate internamente per questo endpoint TCP. L'applicazione può riutilizzare la memoria supportata dall'endpoint TCP come opportuno.

Se corrisponde a una connessione TCP in tempo reale, la connessione viene terminata in modo imprevisto (come in otTcpAbort()). Tutte le risorse fornite dall'applicazione per questo endpoint TCP (buffer collegati per il buffer di invio, memoria per il buffer di ricezione, la struttura aEndpoint stessa e così via) vengono immediatamente restituite all'applicazione.

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla struttura dell'endpoint TCP da inizializzare.
Valori di ritorno
OT_ERROR_NONE
Ha inizializzato l'endpoint TCP.
OT_ERROR_FAILED
Impossibile inizializzare l'endpoint TCP.

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Permette di ottenere il puntatore di contesto associato all'elemento 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
)

Permette di ottenere 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.

otTcpEndpointInizializza

otError otTcpEndpointInitialize(
  otInstance *aInstance,
  otTcpEndpoint *aEndpoint,
  const otTcpEndpointInitializeArgs *aArgs
)

Inizializza un endpoint TCP.

Chiamata a questa funzione consente a OpenThread di monitorare l'endpoint TCP e di archiviare e recuperare i dati TCP all'interno di aEndpoint. L'applicazione dovrebbe evitare di accedere o modificare direttamente i campi in aEndpoint. Se l'applicazione deve recuperare la memoria supportata dal backup aEndpoint, deve chiamare otTcpEndpointDeinitialize().

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza di OpenThread.
[in] aEndpoint
Un puntatore a una struttura di endpoint TCP.
[in] aArgs
Un puntatore a una struttura di argomenti.
Valori di ritorno
OT_ERROR_NONE
Endpoint TCP aperto.
OT_ERROR_FAILED
Impossibile aprire l'endpoint TCP.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

Ottieni un puntatore sull'host locale e sulla porta di un endpoint TCP.

I contenuti dell'host e della porta potrebbero essere inattivi se il socket non è in stato di connessione e non è stato associato a un'ultima disconnessione.

Dettagli
Parametri
[in] aEndpoint
L'endpoint TCP per cui ottenere l'host locale e la porta.
Restituisce
L'host locale e il porto di aEndpoint.

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

Ottieni un puntatore sull'host e sulla porta del peer TCP.

I contenuti dell'host e della porta potrebbero non essere aggiornati se il socket non è in stato di connessione.

Dettagli
Parametri
[in] aEndpoint
L'endpoint TCP per cui ottenere l'host e la porta del peer.
Restituisce
Host e porta del peer di connessione di aEndpoint.

OtTcpascolto

otError otTcpListen(
  otTcpListener *aListener,
  const otSockAddr *aSockName
)

Causa le connessioni TCP in arrivo che corrispondono all'indirizzo IP e alla porta specificati per attivare i callback del listener TCP.

Dettagli
Parametri
[in] aListener
Un puntatore alla struttura del listener TCP che dovrebbe iniziare ad ascoltare.
[in] aSockName
L'indirizzo e la porta su cui ascoltare le connessioni in arrivo.
Valori di ritorno
OT_ERROR_NONE
Inizio dell'ascolto del listener TCP.
OT_ERROR_FAILED
Impossibile avviare l'ascolto sul listener TCP.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Deinizializza questo listener TCP.

Ciò significa che OpenThread non monitora più questo listener TCP e alloca tutte le risorse che ha allocato internamente per questo listener TCP. L'applicazione può riutilizzare la memoria supportata dal listener TCP come preferisci.

Se il listener TCP è attualmente in ascolto, interrompe l'ascolto.

Dettagli
Parametri
[in] aListener
Un puntatore alla struttura del listener TCP da inizializzare.
Valori di ritorno
OT_ERROR_NONE
Hai inizializzato il listener TCP.
OT_ERROR_FAILED
Impossibile inizializzare il listener TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Permette di ottenere il puntatore di contesto associato all'elemento 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.

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Permette di ottenere 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.

otTcpListenerInitialize

otError otTcpListenerInitialize(
  otInstance *aInstance,
  otTcpListener *aListener,
  const otTcpListenerInitializeArgs *aArgs
)

Inizializza un listener TCP.

Chiamata a questa funzione consente a OpenThread di monitorare il listener TCP e di archiviare e recuperare i dati TCP all'interno di aListener. L'applicazione dovrebbe evitare di accedere o modificare direttamente i campi in aListener. Se l'applicazione deve recuperare la memoria supportata da aListener, deve chiamare otTcpListenerDeinitialize().

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza di OpenThread.
[in] aListener
Un puntatore su una struttura di listener TCP.
[in] aArgs
Un puntatore a una struttura di argomenti.
Valori di ritorno
OT_ERROR_NONE
Il listener TCP è stato aperto.
OT_ERROR_FAILED
Impossibile aprire il listener TCP.

OtTcpReceiveByReference

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 viene richiamato il callback "Receive ready" o fino alla chiamata successiva a otTcpReceiveContiguify() o otTcpCommitReceive().

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla 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 di ritorno
OT_ERROR_NONE
Operazione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione.

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

Riorganizza il buffer di ricezione in modo completamente contiguo in memoria.

Questo passaggio è facoltativo; un'applicazione può semplicemente attraversare la catena di buffer collegata ottenuta chiamando otTcpReceiveByReference. Alcune applicazioni potrebbero voler chiamare questa funzione per rendere il buffer di ricezione contiguo per semplificare l'elaborazione dei dati, ma ciò andrà 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 viene riorganizzato.
Valori di ritorno
OT_ERROR_NONE
Operazione completata.
OT_ERROR_FAILED
Impossibile completare l'operazione.

otTcpSendByExtension

otError otTcpSendByExtension(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Aggiunge i dati al buffer di invio estendendo la lunghezza dell'ultimo otLinkedBuffer nel buffer di invio in base alla quantità specificata.

Se il buffer di invio è vuoto, l'operazione non riesce.

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla struttura dell'endpoint TCP che rappresenta l'endpoint TCP su cui inviare i dati.
[in] aNumBytes
Il numero di byte per cui estendere la lunghezza del buffer collegato finale.
[in] aFlags
Flag che specificano le opzioni disponibili per questa operazione (vedi l'enumerazione qui sopra).
Valori di ritorno
OT_ERROR_NONE
Aggiunta dei dati al buffer di invio riuscita.
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 puntato da aBuffer al buffer di invio.

Una volta chiamata a questa funzione, il buffer collegato e i dati a cui fa riferimento sono di proprietà dello stack TCP; non devono essere modificati dall'applicazione fino a quando "l'invio è terminato" e il callback 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 precedente chiamata a questa funzione non è ancora stato attivato.

Tieni presente che aBuffer non deve essere concatenato, ma il campo mNext deve essere NULL. Se, dopo questa chiamata, verranno aggiunti altri dati, il flag OT_TCP_SEND_MORE_TO_COME deve essere utilizzato come suggerimento per l'implementazione TCP.

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla 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
Flag che specificano le opzioni disponibili per questa operazione (vedi l'enumerazione qui sopra).
Valori di ritorno
OT_ERROR_NONE
Aggiunta dei dati al buffer di invio riuscita.
OT_ERROR_FAILED
Impossibile aggiungere i dati al buffer di invio.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Comunica al 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 di connessione. Per questa connessione, le letture future sul peer di connessione genereranno la condizione "fine dello stream" e le scritture future su questo endpoint di connessione non riusciranno.

La condizione "fine dello stream" si applica solo dopo che tutti i dati forniti in precedenza allo stack TCP da inviare sono stati ricevuti dal peer di connessione.

Dettagli
Parametri
[in] aEndpoint
Un puntatore alla struttura dell'endpoint TCP che rappresenta l'endpoint TCP da arrestare.
Valori di ritorno
OT_ERROR_NONE
La condizione "fine dello stream" è stata messa in coda per la trasmissione.
OT_ERROR_FAILED
Impossibile mettere in coda la condizione "Fine del flusso" per la trasmissione.

stream OtTcpStop

otError otTcpStopListening(
  otTcpListener *aListener
)

Causa l'interruzione dell'ascolto di queste connessioni in arrivo da parte del listener TCP.

Dettagli
Parametri
[in] aListener
Un puntatore alla struttura del listener TCP che dovrebbe interrompere l'ascolto.
Valori di ritorno
OT_ERROR_NONE
Impossibile interrompere l'ascolto sul listener TCP.
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 368

I valori OT_TCP_ENDPOINT_TCB_SIZE_BASE e OT_TCP_ENDPOINT_TCB_NUM_POINTERS vengono scelti in modo tale che il campo mTcb di otTcpEndpoint abbia le stesse dimensioni dell'elemento tcpcb in TCPlp.

Questo è necessario perché il campo mTcb, sebbene opaco nella sua dichiarazione, è trattato come struttura 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

OT_TCP_LISTENER_TCB_SIZE_BASE e OT_TCP_LISTENER_TCB_NUM_POINTERS vengono selezionati in modo che il campo mTcbListener di otTcpListener abbia le stesse dimensioni dell'elemento tcpcb_listen in TCPlp.

Questa operazione è necessaria perché il campo mTcbAscolta, sebbene opaco nella sua dichiarazione, viene considerato come tcpcb struttura nell'implementazione TCP.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

Dimensioni del buffer consigliate per le connessioni TCP che attraversano circa 3 hop wireless o meno.

Sulle piattaforme in cui la memoria è particolarmente vincolata e in situazioni in cui la larghezza di banda elevata non è necessaria, può essere opportuno selezionare manualmente una dimensione di buffer più piccola.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

Dimensione del buffer consigliata per le connessioni TCP che attraversano molti hop wireless.

Se la connessione TCP attraversa un numero molto elevato di hop (più o sei circa), può 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 ulteriori informazioni o per contribuire alla nostra documentazione, consulta la sezione Risorse.