nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
這個類別的物件代表 TCP 傳輸端點。
摘要
Nest Inet Layer 會封裝與 TCP 傳輸端點 (Linux 和 BSD 衍生系統上的 SOCK_STREAM 通訊端) 或 LwIP TCP 通訊協定控制區塊 (根據系統設定) 互動的方法。
繼承
沿用自: nl::Inet::EndPointBasis
公開類型 |
|
---|---|
@10{
|
列舉 底層端點的基本動態狀態。 |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
連線接受錯誤事件處理函式的類型。 |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
連線建立事件處理函式的類型。 |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
連線建立事件處理函式的類型。 |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
接收的連線所接收事件處理函式的類型。 |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
接收事件處理函式的類型。 |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
資料傳輸事件處理函式的類型。 |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
半關閉接待事件處理函式的類型。 |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
TCP SendIdle 已變更信號處理函式的類型。 |
公開屬性 |
|
---|---|
OnAcceptError
|
端點的連線接受事件處理函式委派。
|
OnConnectComplete
|
端點的連線建立事件處理函式委派。
|
OnConnectionClosed
|
端點的關閉事件處理函式委派。
|
OnConnectionReceived
|
端點的連線會接收事件處理函式委派。
|
OnDataReceived
|
端點的訊息文字接收事件處理函式委派。
|
OnDataSent
|
端點的訊息文字傳輸事件處理函式委派。
|
OnPeerClose
|
端點的半關閉方式接收事件處理函式委派。
|
OnTCPSendIdleChanged
|
TCP 連線傳送通道的閒置狀態變更時,端點傳送信號的事件處理函式委派。
|
ReceiveEnabled
|
bool
這個切換鈕指出應用程式是否正在接收資料。
|
State
|
enum nl::Inet::TCPEndPoint::@10
底層端點的基本動態狀態。
|
公開函式 |
|
---|---|
Abort(void)
|
void
取消端點,也就是傳送 RST 封包。
|
AckReceive(uint16_t len)
|
確認收到訊息文字。
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
將端點繫結至介面 IP 位址。
|
Close(void)
|
啟動 TCP 完全關閉,也就是以傳送與接收方式結束。
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
啟動 TCP 連線。
|
DisableKeepAlive(void)
|
停用 TCP「保持運作」如果有需要 SQL 指令的分析工作負載
則 BigQuery 可能是最佳選擇
|
DisableReceive(void)
|
void
停用收訊功能。
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
啟用 TCP「保持運作」如果有需要 SQL 指令的分析工作負載
則 BigQuery 可能是最佳選擇
|
EnableNoDelay(void)
|
EnableNoDelay。
|
EnableReceive(void)
|
void
啟用收訊功能。
|
Free(void)
|
void
啟動 (或繼續) TCP 完整關閉,並忽略錯誤。
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
擷取本機端點的 IP 位址和 TCP 通訊埠。
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
擷取遠端端點的 IP 位址和 TCP 通訊埠。
|
IsConnected(void) const
|
bool
擷取是否已建立 TCP 連線。
|
Listen(uint16_t backlog)
|
準備端點以接收 TCP 訊息。
|
LogId(void)
|
uint16_t
取得端點的 ID。
|
MarkActive(void)
|
void
請注意活動,也就是重設閒置計時器。
|
PendingReceiveLength(void)
|
uint32_t
擷取未確認接收資料的長度。
|
PendingSendLength(void)
|
uint32_t
擷取等待首次傳輸的資料長度。
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
將訊息文字傳回接收佇列的標題。
|
Send(Weave::System::PacketBuffer *data, bool push)
|
透過 TCP 連線傳送訊息。
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
設定逾時,連線成功或傳回錯誤。
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
設定 TCP TCP_USER_TIMEOUT 通訊端選項。
|
Shutdown(void)
|
以半關閉方式啟動 TCP,也就是結束傳送。
|
公開類型
10 次
@10
底層端點的基本動態狀態。
物件會在「就緒」狀態中初始化然後繼續處理與簡化 TCP 傳輸狀態機器狀態相對應的後續狀態。
注意:基於過往的二進位檔相容性原因,kBasisState_Closed
狀態列舉會對應至 kState_Ready
。現有的 kState_Closed
用於區分「尚未開啟」的不同之處以及「先前開啟過」
已關閉」之前存在於 kState_Ready
和 kState_Closed
狀態下的存在。
屬性 | |
---|---|
kState_Bound
|
端點已繫結,但未受到監聽。 |
kState_Closed
|
端點已關閉,已可發布。 |
kState_Closing
|
端點雙向關閉。 |
kState_Connected
|
端點已連線,現支援 tx/rx。 |
kState_Connecting
|
嘗試連線的端點。 |
kState_Listening
|
用於接收連線的端點。 |
kState_Ready
|
端點已初始化,但尚未繫結。 |
kState_ReceiveShutdown
|
端點已回應半關閉。 |
kState_SendShutdown
|
端點已啟動一半的關閉。 |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
連線接受錯誤事件處理函式的類型。
將這類函式提供給 OnAcceptError
委派成員,以處理 endPoint
上的連線接受錯誤事件。err
引數會提供錯誤類型的特定詳細資料。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
連線建立事件處理函式的類型。
向 OnConnectComplete
委派成員提供此類型的函式,以處理 endPoint
上的連線建立事件。err
引數會區分成功連線與失敗。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
連線建立事件處理函式的類型。
向 OnConnectionClosed
委派成員提供此類型的函式,以處理 endPoint
上的連線終止事件。err
引數可用來區分成功終止與失敗。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
接收的連線所接收事件處理函式的類型。
向 OnConnectionReceived
委派成員提供此類型的函式,以處理 listeningEndPoint
上的連線接待事件。新收到的端點「conEndPoint
」位於 IP 位址 peerAddr
和 TCP 通訊埠 peerPort
。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
接收事件處理函式的類型。
向 OnDataReceived
委派成員提供此類型的函式,以處理 endPoint
上的資料接收事件,其中 data
是接收的訊息文字。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
資料接收事件處理常式必須使用 AckReceive
方法確認已處理的資料。除非改用 PutBackReceivedData
,否則也必須叫用資料緩衝區上的 Free
方法。
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
資料傳輸事件處理函式的類型。
向 OnDataSent
委派成員提供這種類型的函式,以便處理 endPoint
上的資料傳輸事件,其中 len
是新增至 TCP 傳輸視窗的訊息文字長度,此長度有資格由基礎網路堆疊傳送。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
半關閉接待事件處理函式的類型。
向 OnPeerClose
委派成員提供此類型的函式,以處理 endPoint
上的連線終止事件。
詳細資料 | |||
---|---|---|---|
參數 |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
TCP SendIdle 已變更信號處理函式的類型。
向 OnTCPSendIdleChanged
委派成員提供這種類型的函式,以處理 TCPEndPoint 的傳送通道 (在閒置與非閒置狀態間變更狀態) 的事件。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
公開屬性
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
TCP 連線傳送通道的閒置狀態變更時,端點傳送信號的事件處理函式委派。
為了讓傳送資料順利傳送至對等點,上層層會利用這些資料採取適當行動。
ReceiveEnabled
bool ReceiveEnabled
這個切換鈕指出應用程式是否正在接收資料。
州
enum nl::Inet::TCPEndPoint::@10 State
底層端點的基本動態狀態。
物件會在「就緒」狀態中初始化然後繼續處理與簡化 TCP 傳輸狀態機器狀態相對應的後續狀態。
注意:基於過往的二進位檔相容性原因,kBasisState_Closed
狀態列舉會對應至 kState_Ready
。現有的 kState_Closed
用於區分「尚未開啟」的不同之處以及「先前開啟過」
已關閉」之前存在於 kState_Ready
和 kState_Closed
狀態下的存在。
公開函式
取消
void Abort( void )
取消端點,也就是傳送 RST 封包。
AckReceive
INET_ERROR AckReceive( uint16_t len )
確認收到訊息文字。
使用這個方法可確認接收到所有或部分的資料會順利接收。如果 len
大於尚未確認的已接收資料總數,則未定義作業語意。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
繫結
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
將端點繫結至介面 IP 位址。
將端點繫結至指定的網路介面 IP 位址。
詳細資料 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|
在 LwIP 上,不得在已取得 LwIP 堆疊鎖定時呼叫這個方法。
關閉
INET_ERROR Close( void )
啟動 TCP 完全關閉,也就是以傳送與接收方式結束。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
傳回值 |
|
連線
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
啟動 TCP 連線。
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
停用 TCP「保持運作」如果有需要 SQL 指令的分析工作負載 則 BigQuery 可能是最佳選擇
TCPEndPoint::DisableKeepAlive.
停用相關聯 TCP 連線的 TCP 保持運作探測。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
傳回值 |
|
注意:只有在端點處於其中一個連線狀態時,才能呼叫這個方法。 如未在端點上啟用保持運作,這個方法就不會執行任何動作。
DisableReceive
void DisableReceive( void )
停用收訊功能。
停用所有事件處理常式。傳送至停用接收的端點的資料會經過確認,直到接收視窗用盡為止。
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
啟用 TCP「保持運作」如果有需要 SQL 指令的分析工作負載 則 BigQuery 可能是最佳選擇
開始自動傳輸 TCP「保持運作」每 interval
秒探測段一次如果收到負面回應,或在傳送 timeoutCount
探測片段後沒有收到正面回應,連線就會自動取消。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
請參閱 RFC 1122 的 4.2.3.6 節,進一步瞭解規格詳情。
針對相關聯的 TCP 連線啟用 TCP 保持運作探測。
注意:只有在端點處於其中一個連線狀態時,才能呼叫這個方法。 可以多次呼叫此方法來調整保持運作間隔或逾時計數。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableReceive
void EnableReceive( void )
啟用收訊功能。
啟用所有事件處理常式。傳送至停用接收的端點的資料會經過確認,直到接收視窗用盡為止。
免費
void Free( void )
啟動 (或繼續) TCP 完整關閉,並忽略錯誤。
物件會退回免費集區,而後續的所有使用者參照都會失效。
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
擷取本機端點的 IP 位址和 TCP 通訊埠。
請勿為任一引數使用 NULL
指標值。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
擷取遠端端點的 IP 位址和 TCP 通訊埠。
請勿為任一引數使用 NULL
指標值。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
IsConnected
bool IsConnected( void ) const
擷取是否已建立 TCP 連線。
聆聽
INET_ERROR Listen( uint16_t backlog )
準備端點以接收 TCP 訊息。
如果 State
已經是 kState_Listening
,則系統不會執行任何作業,否則 State
會設為 kState_Listening
,且端點已準備好接收 TCP 訊息 (根據平台語意)。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
在某些平台上,系統不會使用 backlog
引數 (佇列深度是固定的,一次只能接受一個連線)。
在 LwIP 系統中,不得在已取得 LwIP 堆疊鎖定的情況下呼叫這個方法
LogId
uint16_t LogId( void )
取得端點的 ID。
詳細資料 | |
---|---|
傳回 |
傳回使用記錄的不透明專屬 ID。
|
MarkActive
void MarkActive( void )
請注意活動,也就是重設閒置計時器。
將閒置計時器重設為零。
PendingReceiveLength
uint32_t PendingReceiveLength( void )
PendingSendLength
uint32_t PendingSendLength( void )
擷取等待首次傳輸的資料長度。
詳細資料 | |
---|---|
傳回 |
傳送佇列中的未傳輸位元組數。
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
將訊息文字傳回接收佇列的標題。
這個方法只能由資料接收事件處理常式呼叫,將未確認的部分資料移回接收佇列。如果呼叫端不在資料接收事件處理常式的範圍內、data
不是提供給處理常式的 Weave::System::PacketBuffer
,或 data
不包含在先前呼叫 AckReceive(uint16_t len)
方法所確認的位元組之後的剩餘未確認部分,作業語意便未定義。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
傳送
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
透過 TCP 連線傳送訊息。
無論傳輸成功或失敗,系統都會在 data
引數上呼叫 Weave::System::PacketBuffer::Free
方法。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
設定逾時,連線成功或傳回錯誤。
詳細資料 | |||
---|---|---|---|
參數 |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
設定 TCP TCP_USER_TIMEOUT 通訊端選項。
當值大於 0 時,會指明傳輸資料在 TCP 強制關閉對應連線前,可能維持未確認的最長時間 (以毫秒為單位)。如果選項值指定為 0,TCP 將使用系統預設值。詳情請參閱 RFC 5482。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
設定 TCP 使用者逾時通訊端選項。
當值大於 0 時,會指明傳輸資料在 TCP 強制關閉對應連線前,可能維持未確認的最長時間 (以毫秒為單位)。如果選項值指定為 0,TCP 會使用系統預設值。詳情請參閱 RFC 5482。
注意:只有在端點處於其中一個連線狀態時,才能呼叫這個方法。 可以多次呼叫此方法來調整保持運作間隔或逾時計數。
關閉
INET_ERROR Shutdown( void )
以半關閉方式啟動 TCP,也就是結束傳送。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
傳回值 |
|