nl:: Inet:: IPEndPointBasis
#include <src/inet/IPEndPointBasis.h>
這個類別的物件代表不穩定的 IP 通訊協定端點。
摘要
繼承
沿用自: nl::Inet::EndPointBasis直接已知的子類別:
nl::Inet::RawEndPoint
nl::Inet::UDPEndPoint
公開類型 |
|
---|---|
@8{
|
列舉 底層端點的基本動態狀態。 |
@9{
|
列舉SendMsg 方法的傳送選項旗標。 |
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)
|
typedefvoid(*
訊息文字接收事件處理函式的類型。 |
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)
|
typedefvoid(*
接收錯誤事件處理函式的類型。 |
公開屬性 |
|
---|---|
OnMessageReceived
|
端點的訊息接收事件處理函式委派。
|
OnReceiveError
|
端點接收錯誤事件處理函式委派。
|
mState
|
enum nl::Inet::IPEndPointBasis::@8
底層端點的基本動態狀態。
|
受保護的屬性 |
|
---|---|
mBoundIntfId
|
InterfaceId
|
公開函式 |
|
---|---|
JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
|
加入 IP 多點傳播群組。
|
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
|
離開 IP 多點傳播群組。
|
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
|
設定是否應循環播放 IP 多點傳播流量。
|
受保護的函式 |
|
---|---|
Bind(IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
|
|
BindInterface(IPAddressType aAddressType, InterfaceId aInterfaceId)
|
|
GetSocket(IPAddressType aAddressType, int aType, int aProtocol)
|
|
HandleDataReceived(Weave::System::PacketBuffer *aBuffer)
|
void
|
HandlePendingIO(uint16_t aPort)
|
void
|
Init(InetLayer *aInetLayer)
|
void
|
PrepareIO(void)
|
|
SendMsg(const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)
|
公開的靜態函式 |
|
---|---|
FindNetifFromInterfaceId(InterfaceId aInterfaceId)
|
struct netif *
|
受保護的靜態函式 |
|
---|---|
GetPacketInfo(Weave::System::PacketBuffer *buf)
|
取得 LwIP IP 層來源和目的地定址資訊。
|
公開類型
8 人
@8
底層端點的基本動態狀態。
物件會在「就緒」狀態中初始化接著繼續進入「繫結」狀態繫結至本機介面位址後的狀態,請繼續「監聽」狀態。
注意:基於過往的二進位檔相容性原因,kBasisState_Closed
狀態列舉會對應至 kState_Ready
。現有的 kState_Closed
用於區分「尚未開啟」的不同之處以及「先前開啟過」
已停業」之前存在於 kState_Ready
和 kState_Closed
狀態下的存在。
屬性 | |
---|---|
kState_Bound
|
端點已繫結,但未受到監聽。 |
kState_Closed
|
端點已關閉,已可發布。 |
kState_Listening
|
端點接收資料元。 |
kState_Ready
|
端點已初始化,但尚未開啟。 |
OnMessageReceivedFunct
void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)
訊息文字接收事件處理函式的類型。
向 OnMessageReceived
委派成員提供這種類型的函式,以處理 endPoint
上的訊息文字接收事件,其中 msg
是寄件者在 senderAddr
收到的訊息文字。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
OnReceiveErrorFunct
void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)
接收錯誤事件處理函式的類型。
向 OnReceiveError
委派成員提供此類型的函式,以處理 endPoint
上的接待錯誤事件。err
引數會提供錯誤類型的特定詳細資料。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
公開屬性
mState
enum nl::Inet::IPEndPointBasis::@8 mState
底層端點的基本動態狀態。
物件會在「就緒」狀態中初始化接著繼續進入「繫結」狀態繫結至本機介面位址後的狀態,請繼續「監聽」狀態。
注意:基於過往的二進位檔相容性原因,kBasisState_Closed
狀態列舉會對應至 kState_Ready
。現有的 kState_Closed
用於區分「尚未開啟」的不同之處以及「先前開啟過」
已停業」之前存在於 kState_Ready
和 kState_Closed
狀態下的存在。
受保護的屬性
mBoundIntfId
InterfaceId mBoundIntfId
公開函式
JoinMulticastGroup
INET_ERROR JoinMulticastGroup( InterfaceId aInterfaceId, const IPAddress & aAddress )
加入 IP 多點傳播群組。
將端點加入指定介面上提供的多點傳播群組。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
LeaveMulticastGroup
INET_ERROR LeaveMulticastGroup( InterfaceId aInterfaceId, const IPAddress & aAddress )
離開 IP 多點傳播群組。
從指定介面上提供的多點傳播群組移除端點。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
SetMulticastLoopback
INET_ERROR SetMulticastLoopback( IPVersion aIPVersion, bool aLoopback )
設定是否應循環播放 IP 多點傳播流量。
設定 IP 多點傳播流量是否應循環回這個端點。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
受保護的函式
繫結
INET_ERROR Bind( IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId )
BindInterface
INET_ERROR BindInterface( IPAddressType aAddressType, InterfaceId aInterfaceId )
GetSocket
INET_ERROR GetSocket( IPAddressType aAddressType, int aType, int aProtocol )
HandleDataReceived
void HandleDataReceived( Weave::System::PacketBuffer *aBuffer )
HandlePendingIO
void HandlePendingIO( uint16_t aPort )
Init
void Init( InetLayer *aInetLayer )
PrepareIO
SocketEvents PrepareIO( void )
SendMsg
INET_ERROR SendMsg( const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags )
公開的靜態函式
FindNetifFromInterfaceId
struct netif * FindNetifFromInterfaceId( InterfaceId aInterfaceId )
受保護的靜態函式
GetPacketInfo
IPPacketInfo * GetPacketInfo( Weave::System::PacketBuffer *buf )
取得 LwIP IP 層來源和目的地定址資訊。
使用與封包相關的 LwIP 資訊「隱藏」時會在封包緩衝區的資料開頭之前預留的空間。此為必要操作,因為系統層事件只有兩個引數,而在本例中用於傳送指向終點的指標和緩衝區的指標。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
順利解決地址資訊問題否則,如果封包用於位址資訊的封包空間不足,則傳回 NULL。
|
大多數情況下,這種儲存資訊的做法在資料有效前就存在,因為 LwIP IP 訊息的第一個緩衝區包含了用於乙太網路/IP/UDP 標頭的空間。不過,由於目前 IPPacketInfo 結構的大小 (40 個位元組),沒有足夠的空間將結構與酬載儲存在單一封包緩衝區中。實際上,只有在傳送極大的 IPv4 封包不含乙太網路標頭時,才會發生這種情況。