NL::内网:: TCP端点
#include <src/inet/TCPEndPoint.h>
此类的对象表示 TCP 传输端点。
概括
Nest Inet 层封装了与 TCP 传输端点(Linux 和 BSD 派生系统上的 SOCK_STREAM 套接字)或 LwIP TCP 协议控制块交互的方法,因为系统已进行相应配置。
遗产
:从继承NL :: Inet电子:: EndPointBasis公共类型 | |
---|---|
@10 { | 枚举 底层端点的基本动态状态。 |
OnAcceptErrorFunct )(TCPEndPoint *endPoint, INET_ERROR err) | 类型定义void(* 连接接受错误事件处理函数的类型。 |
OnConnectCompleteFunct )(TCPEndPoint *endPoint, INET_ERROR err) | 类型定义void(* 连接建立事件处理函数的类型。 |
OnConnectionClosedFunct )(TCPEndPoint *endPoint, INET_ERROR err) | 类型定义void(* 连接建立事件处理函数的类型。 |
OnConnectionReceivedFunct )(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort) | 类型定义void(* 连接类型接收事件处理函数。 |
OnDataReceivedFunct )(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data) | 类型定义void(* 数据接收事件处理函数的类型。 |
OnDataSentFunct )(TCPEndPoint *endPoint, uint16_t len) | 类型定义void(* 数据传输事件处理函数的类型。 |
OnPeerCloseFunct )(TCPEndPoint *endPoint) | 类型定义void(* 半关闭接收事件处理函数的类型。 |
OnTCPSendIdleChangedFunct )(TCPEndPoint *endPoint, bool isIdle) | 类型定义void(* 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“保持活动”选项。 |
DisableReceive (void) | void 禁用接收。 |
EnableKeepAlive (uint16_t interval, uint16_t timeoutCount) | 启用 TCP“保持活动”选项。 |
EnableNoDelay (void) | 启用无延迟。 |
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 获取端点的标识符。 |
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 为 Connect 设置超时以成功或返回错误。 |
SetUserTimeout (uint32_t userTimeoutMillis) | 设置 TCP TCP_USER_TIMEOUT 套接字选项。 |
Shutdown (void) | 发起TCP half close,即发送完毕。 |
公共类型
@10
@10
底层端点的基本动态状态。
对象在“就绪”状态下初始化,进入对应于 TCP 传输状态机状态简化的后续状态。
注: kBasisState_Closed
状态枚举被映射到kState_Ready
历史二进制兼容性的原因。现有kState_Closed
存在单独列出,在先前存在之间“尚未开盘”和“先前打开已关闭”的区别kState_Ready
和kState_Closed
状态。
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
方法。的Free
,除非在数据缓冲方法也必须调用PutBackReceivedData
来代替。
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连接的发送通道空闲改变时,端点信令的事件处理函数委托。
上层利用这一点来根据发送的数据是否已可靠地交付给对等方采取适当的行动。
接收启用
bool ReceiveEnabled
指示应用程序是否正在接收数据的控制开关。
状态
enum nl::Inet::TCPEndPoint::@10 State
底层端点的基本动态状态。
对象在“就绪”状态下初始化,进入对应于 TCP 传输状态机状态简化的后续状态。
注: kBasisState_Closed
状态枚举被映射到kState_Ready
历史二进制兼容性的原因。现有kState_Closed
存在单独列出,在先前存在之间“尚未开盘”和“先前打开已关闭”的区别kState_Ready
和kState_Closed
状态。
公共职能
中止
void Abort( void )
中止关闭端点,换句话说,发送 RST 数据包。
确认接收
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.
细节 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
| ||||||||
返回值 |
|
禁用KeepAlive
INET_ERROR DisableKeepAlive( void )
禁用 TCP“保持活动”选项。
TCPEndPoint :: DisableKeepAlive 。
在关联的 TCP 连接上禁用 TCP keepalive 探测。
细节 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
返回值 |
|
注:当端点处于连接状态中的一种此方法只能被调用。如果未在端点上启用 keepalive,则此方法不执行任何操作。
禁用接收
void DisableReceive( void )
禁用接收。
禁用所有事件处理程序。发送到禁用接收的端点的数据将被确认,直到接收窗口用完。
启用KeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
启用 TCP“保持活动”选项。
TCPEndPoint :: EnableKeepAlive 。
自动开始传输TCP“保活”探头段每interval
秒。该连接将接收的否定响应之后,或发送之后自动中止timeoutCount
而不接收的肯定响应的探针片段。
细节 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
| ||||||||||
返回值 |
|
有关规范的详细信息,请参阅 RFC 1122 第 4.2.3.6 节。
在关联的 TCP 连接上启用 TCP keepalive 探测。
注:当端点处于连接状态中的一种此方法只能被调用。可以多次调用此方法来调整保活间隔或超时计数。
细节 | |||||
---|---|---|---|---|---|
参数 |
|
启用无延迟
INET_ERROR EnableNoDelay( void )
启用接收
void EnableReceive( void )
启用接收。
启用所有事件处理程序。发送到禁用接收的端点的数据将被确认,直到接收窗口用完。
自由
void Free( void )
启动(或继续)TCP 完全关闭,忽略错误。
对象返回到空闲池,所有剩余的用户引用随后无效。
获取本地信息
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
提取本地端点的 IP 地址和 TCP 端口。
不要使用NULL
的任一参数指针值。
细节 | |||||||
---|---|---|---|---|---|---|---|
参数 |
| ||||||
返回值 |
|
获取对等信息
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
提取远程端点的 IP 地址和 TCP 端口。
不要使用NULL
的任一参数指针值。
细节 | |||||||
---|---|---|---|---|---|---|---|
参数 |
| ||||||
返回值 |
|
已连接
bool IsConnected( void ) const
提取TCP连接是否建立。
听
INET_ERROR Listen( uint16_t backlog )
准备端点以接收 TCP 消息。
如果State
已经kState_Listening
,然后不进行任何操作,否则该State
被设置为kState_Listening
和端点准备接收的TCP报文,根据平台的语义。
细节 | |||||
---|---|---|---|---|---|
参数 |
| ||||
返回值 |
|
在某些平台上,所述backlog
参数不使用(队列的深度是固定的;只有一个连接可以一次被接受)。
在 LwIP 系统上,不得在已获取 LwIP 堆栈锁的情况下调用此方法
日志ID
uint16_t LogId( void )
获取端点的标识符。
细节 | |
---|---|
退货 | 返回使用日志的不透明唯一标识符。 |
标记活动
void MarkActive( void )
注意活动,换句话说,重置空闲计时器。
将空闲计时器重置为零。
等待接收长度
uint32_t PendingReceiveLength( void )
提取未确认接收数据的长度。
细节 | |
---|---|
退货 | 在字节数的接收队列尚未被确认与 AckReceive(uint16_t len) |
等待发送长度
uint32_t PendingSendLength( void )
提取等待首次传输的数据长度。
细节 | |
---|---|
退货 | 传输队列中未传输的字节数。 |
返回接收数据
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 连接上发送消息文本。
该Weave::System::PacketBuffer::Free
方法被调用的data
参数无论传输是否成功还是失败。
细节 | |||||
---|---|---|---|---|---|
参数 |
| ||||
返回值 |
|
设置连接超时
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
为 Connect 设置超时以成功或返回错误。
细节 | |||
---|---|---|---|
参数 |
|
设置用户超时
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
设置 TCP TCP_USER_TIMEOUT 套接字选项。
TCPEndPoint :: SetUserTimeout 。
当该值大于 0 时,它指定传输数据在 TCP 强制关闭相应连接之前可能保持未确认状态的最长时间(以毫秒为单位)。如果选项值指定为 0,TCP 将使用系统默认值。有关更多详细信息,请参阅 RFC 5482。
细节 | |||||||
---|---|---|---|---|---|---|---|
参数 |
| ||||||
返回值 |
|
设置 TCP 用户超时套接字选项。
当该值大于 0 时,它指定传输数据在 TCP 强制关闭相应连接之前可能保持未确认状态的最长时间,以毫秒为单位。如果选项值指定为 0,TCP 将使用系统默认值。有关更多详细信息,请参阅 RFC 5482。
注:当端点处于连接状态中的一种此方法只能被调用。可以多次调用此方法来调整保活间隔或超时计数。
关掉
INET_ERROR Shutdown( void )
发起TCP half close,即发送完毕。
细节 | |||||||
---|---|---|---|---|---|---|---|
返回值 |
|