透過集合功能整理內容 你可以依據偏好儲存及分類內容。

TCP

這個模組包含用於控制 TCP 通訊的功能。

摘要

列舉

anonymous enum 列舉
此列舉定義了傳送至 otTcpConnect() 的旗標。
anonymous enum 列舉
這項列舉定義了傳送至 otTcpSendByReference 的旗標。
otTcpDisconnectedReason 列舉
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
列舉
此列舉會定義傳入的連線動作。

Typedefs

otLinkedBuffer typedef
要用於 TCP 的連結緩衝區結構。
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
這個回呼表示 TCP 連線現在可以進行雙向通訊。
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
這個回呼表示符合此 TCP 接聽器的連入連線已到達。
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
這個回呼表示連線已中斷且不再使用,或連線已進入 TIME-WAIT 狀態。
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
這個結構包含 otTcpEndpointInitialize() 函式的引數。
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
這個回呼會告知應用程式 TCP 3 向交握已完成,且連線已建立。
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
如果從傳送緩衝區將資料傳輸至收件者時,這項回呼會通知應用程式。
otTcpIncomingConnectionAction typedef
此列舉會定義傳入的連線動作。
otTcpListener typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
這個結構包含 otTcpListenerInitialize() 函式的引數。
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
這個回呼表示可從接收緩衝區使用的位元組數量。
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
這個回呼會告知應用程式,您提供的 aData 中的資料已由連線對等互連確認,且應用程式可以收回 aData 及其內含的資料。

函式

otTcpAbort(otTcpEndpoint *aEndpoint)
強制結束與這個 TCP 端點相關聯的 TCP 連線。
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
將 TCP 端點繫結至 IP 位址和通訊埠。
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
告知 TCP 堆疊,應用程式已在接收緩衝區開始時處理完 aNumBytes 位元組的資料,且 TCP 堆疊不需要繼續在接收緩衝區中保留這些位元組。
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
記錄此連線的遠端主機和連接埠。
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
初始化這個 TCP 端點。
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
取得初始化時與 aEndpoint 相關聯的關聯指標。
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
在初始化時取得與 aEndpoint 相關聯的 otInstance。
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
初始化 TCP 端點。
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
取得 TCP 端點的本機主機和通訊埠指標。
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
取得指向 TCP 端點的主機和通訊埠的指標。
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
讓傳入的 TCP 連線符合指定的 IP 位址和通訊埠,可觸發這個 TCP 監聽器回呼。
otTcpListenerDeinitialize(otTcpListener *aListener)
初始化這個 TCP 監聽器。
otTcpListenerGetContext(otTcpListener *aListener)
void *
取得初始化時與 aListener 相關聯的關聯指標。
otTcpListenerGetInstance(otTcpListener *aListener)
在初始化時取得與 aListener 相關聯的 otInstance。
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
初始化 TCP 監聽器。
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
為應用程式提供參照緩衝區鏈結,參照目前在 TCP 接收緩衝區中的資料。
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
重新整理接收緩衝區,使其在記憶體中完全連續。
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
將傳送緩衝區中的最終 otLinkedBuffer 長度延長到指定金額,在傳送緩衝區中加入資料。
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
將連結 aBuffer 所參照的緩衝區參照的資料新增至傳送緩衝區。
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
通知連線對等互連,此 TCP 端點將不會傳送更多資料。
otTcpStopListening(otTcpListener *aListener)
會使此 TCP 接聽器停止聽取傳入的連線。

結構

otLinkedBuffer

要用於 TCP 的連結緩衝區結構。

otTcpEndpoint

這個結構代表一個 TCP 端點。

otTcpEndpointInitializeArgs

這個結構包含 otTcpEndpointInitialize() 函式的引數。

otTcpListener

這個結構代表一個 TCP 監聽器。

otTcpListenerInitializeArgs

這個結構包含 otTcpListenerInitialize() 函式的引數。

列舉

匿名列舉

 anonymous enum

此列舉定義了傳送至 otTcpConnect() 的旗標。

匿名列舉

 anonymous enum

這項列舉定義了傳送至 otTcpSendByReference 的旗標。

otTcp 中斷連線的理由

 otTcpDisconnectedReason

otTcp 連入連線動作

 otTcpIncomingConnectionAction

此列舉會定義傳入的連線動作。

這會用於 otTcpAcceptReady() 回呼。

屬性
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

接受傳入連線。

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

將連入連線延遲 (靜音忽略)。

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

拒絕連入連線。

Typedefs

TELinkedBuffer

struct otLinkedBuffer otLinkedBuffer

要用於 TCP 的連結緩衝區結構。

單一 otLinkedBuffer 結構會透過 mData 和 mLength 參照記憶體中的位元組陣列。mNext 欄位可用來形成 otLinkedBuffer 結構鏈結。

otTcpAcceptDone

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

這個回呼表示 TCP 連線現在可以進行雙向通訊。

如果是 TCP Fast Open,這可能是 TCP 連線握手實際完成之前。應用程式會提供背景資訊指標,代表接受連線的 TCP 監聽器,以及接受連線的 TCP 端點。提供的結構定義是與 TCP 監聽器相關聯的內容。

詳情
參數
[in] aListener
與連入連線相符的 TCP 監聽器。
[in] aEndpoint
接受傳入連線的 TCP 端點。
[in] aPeer
連入連線的來源主機和通訊埠。

otTcpAcceptReady

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

這個回呼表示符合此 TCP 接聽器的連入連線已到達。

一般回應是讓應用程式接受連入連線。方法是在 aAcceptInto 中加入指向 otTcpEndpoint 的指向點,以接收傳入的連線。此 otTcpEndpoint 必須使用 otTcpEndpointInitialize() 初始化,然後應用程式會傳回 OT_TCP_INCOMING_CONNECTION_ACTION_Accept。

或者,應用程式可以拒絕接受外來連線。應用程式有兩種執行方式。首先,如果應用程式會傳回 OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,則 OpenThread 會自動忽略連線建立要求;連線對等互連可能會重新傳送要求,屆時將再次呼叫回呼。如果目前沒有可用的資源接受連線,但這在連線對等端重新傳送連線建立嘗試時,這些資源就很實用。其次,如果應用程式傳回 OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE,OpenThread 會傳送「連線遭拒」的訊息,傳送給嘗試建立連線的主機。如果應用程式拒絕接收的連線,就不需要填入 aAcceptInto

詳情
參數
[in] aListener
與連入連線相符的 TCP 監聽器。
[in] aPeer
連入連線的來源主機和通訊埠。
[out] aAcceptInto
接受傳入連線的 TCP 端點。
傳回
如何處理連入的連線說明。

OTTcp 已中斷連線

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

這個回呼表示連線已中斷且不再使用,或連線已進入 TIME-WAIT 狀態。

如果連線建立嘗試 (呼叫 otTcpConnect()) 失敗,或之後發生任何時間點 (例如連線逾時或收到來自連線對等互連的 RST 區段),就會發生這種情形。當這個回呼觸發時,應用程式可以為此連線提供的所有資源 (例如,所參照的任何 otLinkedBuffers 和記憶體,但不包括接收緩衝區的 TCP 端點本身或空格) 可以收回。如果連線進入 TIME-WAIT 狀態,一旦進入 TIME-WAIT 狀態時,系統會呼叫此回呼兩次 (使用 OT_TCP_DISCONNECTED_REASON_TIME_WAIT;當 TIME-WAIT 狀態到期時,則會再次呼叫 (使用 OT_TCP_DISCONNECTED_REASON_NORMAL)。

詳情
參數
[in] aEndpoint
連線中斷的 TCP 端點。
[in] aReason
連線中斷的原因。

otTcp 中斷連線的理由

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcp 端點

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

這個結構包含 otTcpEndpointInitialize() 函式的引數。

已建立

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

這個回呼會告知應用程式 TCP 3 向交握已完成,且連線已建立。

詳情
參數
[in] aEndpoint
已建立連線的 TCP 端點。

OTTcp 前進度

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

如果從傳送緩衝區將資料傳輸至收件者時,這項回呼會通知應用程式。

正確的 TCP 作業不需要執行這個回呼。多數應用程式只需使用 otTcpSendDone() 回呼,即可在 TCP 堆疊使用完資料後,重新取得已連結的緩衝區。這個回呼的目的在於支援進階應用程式。藉由更精細的資訊,瞭解連線在傳輸資料上進展的進度,並藉此掌握進度。

這項回呼作業與 TCP 的傳送緩衝區密切相關。傳送緩衝區可理解為有兩個區域。首先,「傳送緩衝區」的正面 (正前方) 是「傳輸中」的區域。也就是已傳送給收件者,但尚未獲得確認的資料。其次,還有「待處理」區域,其中包含傳送緩衝區中所有不在「檔期」範圍內的資料。「待處理記錄」區域是指資料已排入佇列,但尚未傳送。

系統會叫用回呼來回應兩種類型的事件。首先,「傳送緩衝區」的傳送緩衝區可能會縮短 (例如,當收件者確認我們先前傳送的資料時)。其次,「待處理記錄」的傳送緩衝區可能會縮小 (例如,傳送新資料)。這兩個條件通常會同時出現,以回應來自連線對等互連的 ACK 片段,使得它們合併在單一回呼中。

TCP 堆疊只會使用傳送緩衝區末端的 aInSendBuffer 位元組;當 aInSendBuffer 減少 x 時,表示先前在傳送緩衝區頭部的額外 x 位元組已不再是傳送緩衝區的一部分,現在可以由應用程式重新擷取 (也就是覆寫)。請注意,otLinkedBuffer 結構本身只有在參照的所有位元組不再包含在傳送緩衝區中時才能收回。

此回復在以下意涵下消耗 otTcpSendDone():應用程序可以通過比較 aInSendBuffer 和每個連接緩衝器中的數據字數。不過,我們預期 otTcpSendDone() 能直接傳達哪些 otLinkedBuffers 可收回影片。如果這兩個回呼已註冊,且由相同事件觸發 (例如接收到的相同 ACK 區段),則系統會先觸發 otTcpSendDone() 回呼,然後再接著呼叫此回呼。

此外,這個回呼提供 aBacklog,指出傳送緩衝區中有多少位元組尚未開始傳輸。如果您的應用程式只保證在不久後即會傳送資料至傳送緩衝區,則只有在 aBacklog 適當大小 (0 或接近 0) 才適合傳送資料。例如,應用程式可以使用 aBacklog,讓應用程式可透過捨棄或匯總資料來回應佇列建立,以避免建立待處理資料。

呼叫 otTcpSendByReference()otTcpSendByExtension() 並傳回正數位元組後,系統一定會呼叫 otTcpForwardProgress() 回呼,指出何時傳送至傳送緩衝區的內容。將位元組加到傳送緩衝區 (如果有部分位元組已立即傳送、減少待處理記錄) 或未來的時間 (在連線傳送部分或全部資料、減少待處理工作後) 後,可以立即呼叫 otTcpforwardProgress()。「&mediatly,”」表示回呼會立即安排在一項工作集中執行;為避免與匯款相關複雜度降低,系統絕對不會直接從 otTcpSendByReference()otTcpSendByExtension() 函式呼叫 otTcpForwardByReference() 函式。

詳情
參數
[in] aEndpoint
連線的 TCP 端點。
[in] aInSendBuffer
傳送緩衝區中的位元組數 (「傳輸中」和「待處理記錄」區域的總和)。
[in] aBacklog
已排入佇列但尚未傳送的位元組數 (「回溯」區域)。

otTcp 連入連線動作

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

此列舉會定義傳入的連線動作。

這會用於 otTcpAcceptReady() 回呼。

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

這個結構包含 otTcpListenerInitialize() 函式的引數。

otTcpReceiveAvailable

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

這個回呼表示可從接收緩衝區使用的位元組數量。

系統會在接收緩衝區新增位元組時,到此串流結束時,即會呼叫。如果串流已到達 (亦即,如果連線對等端因連線作業的結束而不再可供讀取,則 aEndOfStream 的值為 true)。最後,aBytesRemaining 代表接收緩衝區還剩多少容量,以保存其他已到達的資料。

詳情
參數
[in] aEndpoint
連線的 TCP 端點。
[in] aBytesAvailable
連線的緩衝位元組數。
[in] aEndOfStream
指出是否可以接收其他資料,只要連線資料不在連線接收區之外。
[in] aBytesRemaining
在接收緩衝區已滿之前可接收的額外位元組數。

otTcpSendDone

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

這個回呼會告知應用程式,您提供的 aData 中的資料已由連線對等互連確認,且應用程式可以收回 aData 及其內含的資料。

aData 保證與透過 otTcpSendByReference() 傳送到 TCP 的相同,包括透過 otTcpSendByExtension() 導入的擴充功能。

詳情
參數
[in] aEndpoint
連線的 TCP 端點。
[in] aData
可以收回 otLinkedBuffer 的指標。

函式

OtTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

強制結束與這個 TCP 端點相關聯的 TCP 連線。

如此可讓 TCP 端點免費用於其他連線並清空傳送與接收緩衝區,並將應用程式在 otTcpSendByReference()otTcpSendByExtension() 呼叫中提供的任何資料轉移回應用程式。接收緩衝區的 TCP 端點和記憶體仍與 TCP 端點相關聯。

詳情
參數
[in] aEndpoint
指向 TCP 端點結構的遊標,指出要取消的 TCP 端點。
傳回值
OT_ERROR_NONE
已成功取消 TCP 端點的連線。
OT_ERROR_FAILED
無法取消 TCP 端點的連線。

otTcpBind

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

將 TCP 端點繫結至 IP 位址和通訊埠。

詳情
參數
[in] aEndpoint
要繫結的 TCP 端點結構指標。
[in] aSockName
繫結至這個 TCP 端點的地址和通訊埠。
傳回值
OT_ERROR_NONE
已成功繫結 TCP 端點。
OT_ERROR_FAILED
無法繫結 TCP 端點。

otTcpCommitReceive

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

告知 TCP 堆疊,應用程式已在接收緩衝區開始時處理完 aNumBytes 位元組的資料,且 TCP 堆疊不需要繼續在接收緩衝區中保留這些位元組。

詳情
參數
[in] aEndpoint
指向 TCP 端點結構的資料點,代表要接收資料的 TCP 端點。
[in] aNumBytes
消耗的位元組數。
[in] aFlags
為這項作業指定選項的標記 (目前尚無)。
傳回值
OT_ERROR_NONE
已成功完成接收作業。
OT_ERROR_FAILED
無法完成接收作業。

OTTConnect

otError otTcpConnect(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName,
  uint32_t aFlags
)

記錄此連線的遠端主機和連接埠。

預設使用 TCP 快速開放。這表示這項功能只會記錄遠端主機和通訊埠,且只有在第一次呼叫 otTcpSendByReference() 時,才會發生 TCP 連線建立交握。您可以使用 aFlags 明確停用 TCP 快速開放,在這種情況下,系統會立即啟動 TCP 連線建立握手。

詳情
參數
[in] aEndpoint
要連線的 TCP 端點結構指標。
[in] aSockName
要連線的主機 IP 位址和通訊埠。
[in] aFlags
標記指定此作業的選項 (請參閱上方列舉)。
傳回值
OT_ERROR_NONE
已成功完成作業。
OT_ERROR_FAILED
無法完成操作。

otTcpEndpointDeInitial

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

初始化這個 TCP 端點。

這表示 OpenThread 不再追蹤此 TCP 端點,並取消其內部分配給此 TCP 端點的所有資源。如果應用程式支援合適的 TCP 端點,應用程式可重複使用該記憶體。

如果對應的是即時 TCP 連線,連線會意外終止 (例如在 otTcpAbort() 中)。應用程式為這個 TCP 端點提供的所有資源 (傳送緩衝區的連結緩衝區、接收緩衝區記憶體、aEndpoint 結構本身等) 會立即傳回應用程式。

詳情
參數
[in] aEndpoint
要初始化的 TCP 端點結構指標。
傳回值
OT_ERROR_NONE
已成功初始化 TCP 端點。
OT_ERROR_FAILED
無法初始化 TCP 端點。

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

取得初始化時與 aEndpoint 相關聯的關聯指標。

詳情
參數
[in] aEndpoint
要取得相關背景資訊的 TCP 端點。
傳回
aEndpoint 相關聯的關聯指標。

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

在初始化時取得與 aEndpoint 相關聯的 otInstance。

詳情
參數
[in] aEndpoint
要取得執行個體的 TCP 端點。
傳回
aEndpoint 相關聯的 otInstance 指標。

otTcpEndpointInitialize

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

初始化 TCP 端點。

呼叫此函式會讓 OpenThread 能追蹤 TCP 端點,並在 aEndpoint 中儲存及擷取 TCP 資料。應用程式不得直接存取或修改 aEndpoint 中的欄位。如果應用程式需要收回記憶體備份 aEndpoint,則應呼叫 otTcpEndpointDe 初始化()

詳情
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEndpoint
TCP 端點結構的指標。
[in] aArgs
指向引數結構的指標。
傳回值
OT_ERROR_NONE
已成功開啟 TCP 端點。
OT_ERROR_FAILED
無法開啟 TCP 端點。

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

取得 TCP 端點的本機主機和通訊埠指標。

如果這個通訊端未處於連線狀態,且上次連線後並未繫結,主機和通訊埠的內容可能已過時。

詳情
參數
[in] aEndpoint
要取得本機主機和通訊埠的 TCP 端點。
傳回
aEndpoint 的本機主機和通訊埠。

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

取得指向 TCP 端點的主機和通訊埠的指標。

如果這個通訊端未處於連線狀態,主機和通訊埠的內容可能已過時。

詳情
參數
[in] aEndpoint
要接收對等互連主機和通訊埠的 TCP 端點。
傳回
aEndpoint 連線對等互連的主機和通訊埠。

OtTcpListen

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

讓傳入的 TCP 連線符合指定的 IP 位址和通訊埠,可觸發這個 TCP 監聽器回呼。

詳情
參數
[in] aListener
應開始接聽的 TCP 監聽器結構指標。
[in] aSockName
要接聽傳入連線的位址和通訊埠。
傳回值
OT_ERROR_NONE
已成功啟動 TCP 監聽器監聽作業。
OT_ERROR_FAILED
無法啟動 TCP 監聽器的監聽作業。

otTcpListenerDe 初始化

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

初始化這個 TCP 監聽器。

這表示 OpenThread 不再追蹤此 TCP 接聽程式,並取消其內部分配給此 TCP 接聽器的所有資源。應用程式可以重複使用記憶體來支援 TCP 監聽器 (如果可行的話)。

如果 TCP 監聽器目前正在監聽,則會停止聽取。

詳情
參數
[in] aListener
要初始化的 TCP 監聽器結構指標。
傳回值
OT_ERROR_NONE
已成功初始化 TCP 監聽器。
OT_ERROR_FAILED
無法初始化 TCP 監聽器。

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

取得初始化時與 aListener 相關聯的關聯指標。

詳情
參數
[in] aListener
要取得背景資訊的 TCP 監聽器。
傳回
aListener 相關聯的關聯指標。

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

在初始化時取得與 aListener 相關聯的 otInstance。

詳情
參數
[in] aListener
要取得執行個體的 TCP 監聽器。
傳回
aListener 相關聯的 otInstance 指標。

otTcpListenerInitialize

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

初始化 TCP 監聽器。

呼叫此函式會讓 OpenThread 能追蹤 TCP 監聽器,並在 aListener 內儲存和擷取 TCP 資料。應用程式不得直接存取或修改 aListener 中的欄位。如果應用程式需要收回記憶體支援 aListener,則應呼叫 otTcpListenerDe 初始化()

詳情
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aListener
TCP 監聽器結構的指標。
[in] aArgs
指向引數結構的指標。
傳回值
OT_ERROR_NONE
已成功開啟 TCP 監聽器。
OT_ERROR_FAILED
無法開啟 TCP 監聽器。

otTcpReceiveByReference

otError otTcpReceiveByReference(
  otTcpEndpoint *aEndpoint,
  const otLinkedBuffer **aBuffer
)

為應用程式提供參照緩衝區鏈結,參照目前在 TCP 接收緩衝區中的資料。

連結的緩衝鏈鏈仍然有效,直到呼叫「“接受就緒”」為止;下次呼叫回呼,或下次呼叫 otTcpReceiveContiguify()otTcpCommitReceive()

詳情
參數
[in] aEndpoint
指向 TCP 端點結構的資料點,代表要接收資料的 TCP 端點。
[out] aBuffer
指向快取緩衝區鏈的指標,參照目前接收緩衝區資料。
傳回值
OT_ERROR_NONE
已成功完成作業。
OT_ERROR_FAILED
無法完成操作。

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

重新整理接收緩衝區,使其在記憶體中完全連續。

此為選擇性項目,應用程式可以直接透過呼叫 otTcpReceiveByReference 來擷取所連結緩衝區鏈結。某些應用程式可能希望呼叫此函式,讓接收緩衝區保持精簡,以簡化其資料處理,但這可能會使 CPU 作業時間能重新整理接收緩衝區的資料。

詳情
參數
[in] aEndpoint
指向 TCP 端點的資料點,該封包的接收緩衝區要重新整理。
傳回值
OT_ERROR_NONE
已成功完成作業。
OT_ERROR_FAILED
無法完成操作。

otTcpSendByExtension

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

將傳送緩衝區中的最終 otLinkedBuffer 長度延長到指定金額,在傳送緩衝區中加入資料。

如果傳送緩衝區為空白,表示作業失敗。

詳情
參數
[in] aEndpoint
指向 TCP 端點結構的資料點,代表要傳送資料的 TCP 端點。
[in] aNumBytes
用來延長最終已連結緩衝區長度的位元組數。
[in] aFlags
標記指定此作業的選項 (請參閱上方列舉)。
傳回值
OT_ERROR_NONE
已成功將資料新增至傳送緩衝區。
OT_ERROR_FAILED
無法將資料新增至傳送緩衝區。

otTcpSendByReference

otError otTcpSendByReference(
  otTcpEndpoint *aEndpoint,
  otLinkedBuffer *aBuffer,
  uint32_t aFlags
)

將連結 aBuffer 所參照的緩衝區參照的資料新增至傳送緩衝區。

成功呼叫此函式後,連結的緩衝區及其參照的資料將由 TCP 堆疊擁有;在「傳送完成」前,應用程式不得修改這些物件和資料;回呼會把這些物件的擁有權傳回給應用程式。即使呼叫「傳送完成」已叫用此函式的回呼,仍然可以呼叫此函式,在傳送佇列中加入另一個已連結的緩衝區。

請注意,aBuffer 不應鏈結,因此其 mNext 欄位必須為 NULL。如果這次呼叫之後會加入其他資料,您應使用 OT_TCP_SEND_MORE_TO_COME 標記做為 TCP 實作的提示。

詳情
參數
[in] aEndpoint
指向 TCP 端點結構的資料點,代表要傳送資料的 TCP 端點。
[in] aBuffer
指向連結緩衝區且指向要加入傳送緩衝區的資料。
[in] aFlags
標記指定此作業的選項 (請參閱上方列舉)。
傳回值
OT_ERROR_NONE
已成功將資料新增至傳送緩衝區。
OT_ERROR_FAILED
無法將資料新增至傳送緩衝區。

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

通知連線對等互連,此 TCP 端點將不會傳送更多資料。

如果應用程式沒有其他要傳送給連線對等互連的資料,就應使用這個方法。針對這類連線,日後在連線對等互連讀取時,將導致「串流結束」條件,而此連線端點的後續寫入作業將會失敗。

「串流的結束」條件只會在連線連線接收到提供給 TCP 堆疊的任何資料之前套用。

詳情
參數
[in] aEndpoint
代表 TCP 端點結構的資料點,代表要關閉的 TCP 端點。
傳回值
OT_ERROR_NONE
已成功將「串流結束」加入佇列;傳輸狀況。
OT_ERROR_FAILED
無法將「串流結束」排入佇列;傳輸條件。

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

會使此 TCP 接聽器停止聽取傳入的連線。

詳情
參數
[in] aListener
應停止監聽的 TCP 監聽器結構指標。
傳回值
OT_ERROR_NONE
已成功停止監聽 TCP 監聽器。
OT_ERROR_FAILED
無法停止監聽 TCP 監聽器。

巨集

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

系統會選擇 OT_TCP_ENDPOINT_TCB_SIZE_BASE 和 OT_TCP_ENDPOINT_TCB_NUM_POINTERS,otTcpEndpoint 的 mTcb 欄位大小與 TCPlp 中的 tcpcb 相同。

這是必要的,因為 mTcb 欄位在宣告中是不透明的,但在 TCP 實作中會被視為 構件 tcpcb。

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 和 OT_TCP_LISTENER_TCB_NUM_POINTERS,確保 otTcpListener 的 mTcbListener 欄位與 TCPlp 中的 tcpcb_listen 大小相同。

這是必要的,因為 mTcbListen 欄位 (但其宣告為不透明) 在 TCP 實作中會被視為結構 tcpcb。

OT_TCP_RECEIVE_BUFFER_SIZE_TWO_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

建議傳輸至約 3 個無線躍點的 TCP 連線適用的緩衝區大小。

在記憶體特別受限的平台上,或者在需要高頻寬的情況下,建議您手動選取較小的緩衝區大小。

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

週遊多個無線躍點的 TCP 連線建議緩衝區大小。

如果 TCP 連線穿越了大量躍點 (超過 6 個左右),則建議您手動選取大型緩衝區大小。

資源

OpenThread API 參考主題源自原始碼,可從 GitHub 取得。如要瞭解詳情或參閱說明文件,請參閱資源