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
底层端点的基本动态状态。
对象在“ready”进入到“绑定”状态,然后继续“监听”状态。
注意:由于历史二进制文件兼容性的原因,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
底层端点的基本动态状态。
对象在“ready”进入到“绑定”状态,然后继续“监听”状态。
注意:由于历史二进制文件兼容性的原因,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 数据包时才出现这种情况。