TCP
這個模組包含用於控制 TCP 通訊的功能。
摘要
列舉 |
|
---|---|
anonymous enum
|
列舉 此列舉定義了傳送至 otTcpConnect() 的旗標。 |
anonymous enum
|
列舉 這項列舉定義了傳送至 otTcpSendByReference 的旗標。 |
otTcpDisconnectedReason
|
列舉 |
otTcpIncomingConnectionAction{
|
列舉 此列舉會定義傳入的連線動作。 |
Typedefs |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
要用於 TCP 的連結緩衝區結構。 |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
這個回呼表示 TCP 連線現在可以進行雙向通訊。 |
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
|
typedef 這個回呼表示符合此 TCP 接聽器的連入連線已到達。 |
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
|
typedefvoid(*
這個回呼表示連線已中斷且不再使用,或連線已進入 TIME-WAIT 狀態。 |
otTcpDisconnectedReason
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
這個結構包含 otTcpEndpointInitialize() 函式的引數。 |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
這個回呼會告知應用程式 TCP 3 向交握已完成,且連線已建立。 |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
typedefvoid(*
如果從傳送緩衝區將資料傳輸至收件者時,這項回呼會通知應用程式。 |
otTcpIncomingConnectionAction
|
typedef 此列舉會定義傳入的連線動作。 |
otTcpListener
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
這個結構包含 otTcpListenerInitialize() 函式的引數。 |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
這個回呼表示可從接收緩衝區使用的位元組數量。 |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
這個回呼會告知應用程式,您提供的 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
這項列舉定義了傳送至 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 監聽器相關聯的內容。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
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
。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
如何處理連入的連線說明。
|
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)。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
otTcp 中斷連線的理由
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcp 端點
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
這個結構包含 otTcpEndpointInitialize() 函式的引數。
已建立
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
這個回呼會告知應用程式 TCP 3 向交握已完成,且連線已建立。
詳情 | |||
---|---|---|---|
參數 |
|
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() 函式。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
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
代表接收緩衝區還剩多少容量,以保存其他已到達的資料。
詳情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
這個回呼會告知應用程式,您提供的 aData
中的資料已由連線對等互連確認,且應用程式可以收回 aData
及其內含的資料。
aData
保證與透過 otTcpSendByReference() 傳送到 TCP 的相同,包括透過 otTcpSendByExtension() 導入的擴充功能。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
函式
OtTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
強制結束與這個 TCP 端點相關聯的 TCP 連線。
如此可讓 TCP 端點免費用於其他連線並清空傳送與接收緩衝區,並將應用程式在 otTcpSendByReference() 和 otTcpSendByExtension() 呼叫中提供的任何資料轉移回應用程式。接收緩衝區的 TCP 端點和記憶體仍與 TCP 端點相關聯。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
將 TCP 端點繫結至 IP 位址和通訊埠。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpCommitReceive
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
告知 TCP 堆疊,應用程式已在接收緩衝區開始時處理完 aNumBytes
位元組的資料,且 TCP 堆疊不需要繼續在接收緩衝區中保留這些位元組。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
OTTConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
記錄此連線的遠端主機和連接埠。
預設使用 TCP 快速開放。這表示這項功能只會記錄遠端主機和通訊埠,且只有在第一次呼叫 otTcpSendByReference() 時,才會發生 TCP 連線建立交握。您可以使用 aFlags
明確停用 TCP 快速開放,在這種情況下,系統會立即啟動 TCP 連線建立握手。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otTcpEndpointDeInitial
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
初始化這個 TCP 端點。
這表示 OpenThread 不再追蹤此 TCP 端點,並取消其內部分配給此 TCP 端點的所有資源。如果應用程式支援合適的 TCP 端點,應用程式可重複使用該記憶體。
如果對應的是即時 TCP 連線,連線會意外終止 (例如在 otTcpAbort() 中)。應用程式為這個 TCP 端點提供的所有資源 (傳送緩衝區的連結緩衝區、接收緩衝區記憶體、aEndpoint
結構本身等) 會立即傳回應用程式。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
取得初始化時與 aEndpoint
相關聯的關聯指標。
詳情 | |||
---|---|---|---|
參數 |
|
||
傳回 |
與
aEndpoint 相關聯的關聯指標。 |
otTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
在初始化時取得與 aEndpoint
相關聯的 otInstance。
詳情 | |||
---|---|---|---|
參數 |
|
||
傳回 |
與
aEndpoint 相關聯的 otInstance 指標。 |
otTcpEndpointInitialize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
初始化 TCP 端點。
呼叫此函式會讓 OpenThread 能追蹤 TCP 端點,並在 aEndpoint
中儲存及擷取 TCP 資料。應用程式不得直接存取或修改 aEndpoint
中的欄位。如果應用程式需要收回記憶體備份 aEndpoint
,則應呼叫 otTcpEndpointDe 初始化()。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
取得 TCP 端點的本機主機和通訊埠指標。
如果這個通訊端未處於連線狀態,且上次連線後並未繫結,主機和通訊埠的內容可能已過時。
詳情 | |||
---|---|---|---|
參數 |
|
||
傳回 |
aEndpoint 的本機主機和通訊埠。 |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
取得指向 TCP 端點的主機和通訊埠的指標。
如果這個通訊端未處於連線狀態,主機和通訊埠的內容可能已過時。
詳情 | |||
---|---|---|---|
參數 |
|
||
傳回 |
aEndpoint 連線對等互連的主機和通訊埠。 |
OtTcpListen
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
讓傳入的 TCP 連線符合指定的 IP 位址和通訊埠,可觸發這個 TCP 監聽器回呼。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpListenerDe 初始化
otError otTcpListenerDeinitialize( otTcpListener *aListener )
初始化這個 TCP 監聽器。
這表示 OpenThread 不再追蹤此 TCP 接聽程式,並取消其內部分配給此 TCP 接聽器的所有資源。應用程式可以重複使用記憶體來支援 TCP 監聽器 (如果可行的話)。
如果 TCP 監聽器目前正在監聽,則會停止聽取。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
取得初始化時與 aListener
相關聯的關聯指標。
詳情 | |||
---|---|---|---|
參數 |
|
||
傳回 |
與
aListener 相關聯的關聯指標。 |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
在初始化時取得與 aListener
相關聯的 otInstance。
詳情 | |||
---|---|---|---|
參數 |
|
||
傳回 |
與
aListener 相關聯的 otInstance 指標。 |
otTcpListenerInitialize
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
初始化 TCP 監聽器。
呼叫此函式會讓 OpenThread 能追蹤 TCP 監聽器,並在 aListener
內儲存和擷取 TCP 資料。應用程式不得直接存取或修改 aListener
中的欄位。如果應用程式需要收回記憶體支援 aListener
,則應呼叫 otTcpListenerDe 初始化()。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otTcpReceiveByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
為應用程式提供參照緩衝區鏈結,參照目前在 TCP 接收緩衝區中的資料。
連結的緩衝鏈鏈仍然有效,直到呼叫「“接受就緒”」為止;下次呼叫回呼,或下次呼叫 otTcpReceiveContiguify() 或 otTcpCommitReceive()
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpReceiveContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
重新整理接收緩衝區,使其在記憶體中完全連續。
此為選擇性項目,應用程式可以直接透過呼叫 otTcpReceiveByReference
來擷取所連結緩衝區鏈結。某些應用程式可能希望呼叫此函式,讓接收緩衝區保持精簡,以簡化其資料處理,但這可能會使 CPU 作業時間能重新整理接收緩衝區的資料。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
將傳送緩衝區中的最終 otLinkedBuffer 長度延長到指定金額,在傳送緩衝區中加入資料。
如果傳送緩衝區為空白,表示作業失敗。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
將連結 aBuffer
所參照的緩衝區參照的資料新增至傳送緩衝區。
成功呼叫此函式後,連結的緩衝區及其參照的資料將由 TCP 堆疊擁有;在「傳送完成」前,應用程式不得修改這些物件和資料;回呼會把這些物件的擁有權傳回給應用程式。即使呼叫「傳送完成」已叫用此函式的回呼,仍然可以呼叫此函式,在傳送佇列中加入另一個已連結的緩衝區。
請注意,aBuffer
不應鏈結,因此其 mNext 欄位必須為 NULL。如果這次呼叫之後會加入其他資料,您應使用 OT_TCP_SEND_MORE_TO_COME 標記做為 TCP 實作的提示。
詳情 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
通知連線對等互連,此 TCP 端點將不會傳送更多資料。
如果應用程式沒有其他要傳送給連線對等互連的資料,就應使用這個方法。針對這類連線,日後在連線對等互連讀取時,將導致「串流結束」條件,而此連線端點的後續寫入作業將會失敗。
「串流的結束」條件只會在連線連線接收到提供給 TCP 堆疊的任何資料之前套用。
詳情 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otTcpStopListening
otError otTcpStopListening( otTcpListener *aListener )
會使此 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 個左右),則建議您手動選取大型緩衝區大小。