ENetPacketPeer
继承: PacketPeer < RefCounted < Object
ENetPeer 的包装类。
描述
表示 ENetConnection 对等体的 PacketPeer 实现。
该类无法被直接实例化,但可以在 ENetConnection.service 期间,或通过 ENetConnection.get_peers 进行检索。
注意:导出到 Android 时,在导出项目或使用一键部署之前,请确保在 Android 导出预设中,启用了 INTERNET
权限。否则,Android 将阻止任何类型的网络通信。
教程
方法
get_channels() const | |
get_remote_address() const | |
get_remote_port() const | |
get_state() const | |
get_statistic(statistic: PeerStatistic) | |
is_active() const | |
void | peer_disconnect(data: int = 0) |
void | peer_disconnect_later(data: int = 0) |
void | peer_disconnect_now(data: int = 0) |
void | ping() |
void | ping_interval(ping_interval: int) |
void | reset() |
send(channel: int, packet: PackedByteArray, flags: int) | |
void | set_timeout(timeout: int, timeout_min: int, timeout_max: int) |
void | throttle_configure(interval: int, acceleration: int, deceleration: int) |
枚举
enum PeerState: 🔗
PeerState STATE_DISCONNECTED = 0
该对等体已断开连接。
PeerState STATE_CONNECTING = 1
该对等体正在尝试连接。
PeerState STATE_ACKNOWLEDGING_CONNECT = 2
该对等体已确认连接请求。
PeerState STATE_CONNECTION_PENDING = 3
该对等体正在连接。
PeerState STATE_CONNECTION_SUCCEEDED = 4
该对等体已成功连接,但还没有准备好进行通讯(STATE_CONNECTED)。
PeerState STATE_CONNECTED = 5
该对等体已连接,可以进行通讯。
PeerState STATE_DISCONNECT_LATER = 6
该对等体在没有更多的外发数据包可以发送后,将被预定断开连接。
PeerState STATE_DISCONNECTING = 7
该对等体正在断开连接。
PeerState STATE_ACKNOWLEDGING_DISCONNECT = 8
该对等体已确认断开请求。
PeerState STATE_ZOMBIE = 9
该对等体已丢失连接,但并未真正断开连接(因为该对等体还没有对断开连接请求进行确认)。
enum PeerStatistic: 🔗
PeerStatistic PEER_PACKET_LOSS = 0
可靠数据包的平均丢包率,即与 PACKET_LOSS_SCALE 的比率。
PeerStatistic PEER_PACKET_LOSS_VARIANCE = 1
丢包方差。
PeerStatistic PEER_PACKET_LOSS_EPOCH = 2
丢包统计信息上一次被更新的时间(从连接开始后的毫秒数)。丢包统计信息更新的时间间隔为 10 秒,自上次统计信息更新以来,至少必须有一个数据包被发送。
PeerStatistic PEER_ROUND_TRIP_TIME = 3
可靠数据包的平均往返时间。
PeerStatistic PEER_ROUND_TRIP_TIME_VARIANCE = 4
平均往返时间方差。
PeerStatistic PEER_LAST_ROUND_TRIP_TIME = 5
可靠数据包的记录的上次行程时间。
PeerStatistic PEER_LAST_ROUND_TRIP_TIME_VARIANCE = 6
记录的上次行程时间方差。
PeerStatistic PEER_PACKET_THROTTLE = 7
该对等体的当前节流状态。
PeerStatistic PEER_PACKET_THROTTLE_LIMIT = 8
不应被丢弃的不可靠数据包的最大数量。这个值总是大于或等于 1
。初始值等于 PACKET_THROTTLE_SCALE。
PeerStatistic PEER_PACKET_THROTTLE_COUNTER = 9
用于增加数据包节流计数器的内部值。该值被硬编码为 7
且无法更改。你可能想查看 PEER_PACKET_THROTTLE_ACCELERATION。
PeerStatistic PEER_PACKET_THROTTLE_EPOCH = 10
节流统计数据上一次被更新的时间(自连接开始以来的毫秒数)。节流统计更新的时间间隔是 PEER_PACKET_THROTTLE_INTERVAL。
PeerStatistic PEER_PACKET_THROTTLE_ACCELERATION = 11
节流的加速系数。更高的值将使 ENet 更快地适应波动的网络条件,从而导致不可靠的数据包更频繁地被发送。默认值为 2
。
PeerStatistic PEER_PACKET_THROTTLE_DECELERATION = 12
节流的减速系数。更高的值将使 ENet 更快地适应波动的网络条件,从而导致不可靠的数据包不会频繁地被发送。默认值为 2
。
PeerStatistic PEER_PACKET_THROTTLE_INTERVAL = 13
测量最低平均往返时间的时间间隔,供节流机制使用(单位:毫秒)。默认值为 5000
。
常量
PACKET_LOSS_SCALE = 65536
🔗
丢包的参考尺度。请参阅 get_statistic 和 PEER_PACKET_LOSS。
PACKET_THROTTLE_SCALE = 32
🔗
节流配置的参考值。默认值为 32
。 请参阅 throttle_configure。
FLAG_RELIABLE = 1
🔗
将要发送的数据包标记为可靠。
FLAG_UNSEQUENCED = 2
🔗
将要发送的数据包标记为无序(不可靠)。
FLAG_UNRELIABLE_FRAGMENT = 8
🔗
将要发送的数据包标记为不可靠,即使数据包太大且需要分片(增加其被丢弃的机会)。
方法说明
返回为与对等体通信而分配的通道数。
String get_remote_address() const 🔗
返回该对等体的 IP 地址。
返回该对等体的远程端口。
返回该对等体的当前状态。见 PeerState。
float get_statistic(statistic: PeerStatistic) 🔗
返回此对等体请求的 statistic
。见 PeerStatistic。
如果对等体当前处于活动状态(即关联的 ENetConnection 仍然有效),则返回 true
。
void peer_disconnect(data: int = 0) 🔗
请求与对等体断开连接。一旦断开连接完成,在 ENetConnection.service 期间,将生成一个 ENetConnection.EVENT_DISCONNECT。
void peer_disconnect_later(data: int = 0) 🔗
请求与对等体断开连接,但仅在发送完所有队列的传出数据包之后。一旦断开连接完成,在 ENetConnection.service 期间,将生成一个 ENetConnection.EVENT_DISCONNECT。
void peer_disconnect_now(data: int = 0) 🔗
强制立即断开与对等体的连接。不会生成 ENetConnection.EVENT_DISCONNECT。不保证外部对等体会收到断开连接通知,并会在从此函数返回后立即重置。
void ping() 🔗
向对等体发送 ping 请求。ENet 会定期自动 ping 所有连接的对等体,但也可以手动调用此函数,确保进行更频繁的 ping 请求。
void ping_interval(ping_interval: int) 🔗
设置向对等体发送 ping 的间隔 ping_interval
,单位为毫秒。Ping 既用于监控连接的有效性,也用于在低流量期间动态调整节流,以便在流量高峰期节流具有合理的响应能力。默认的 ping 间隔为 500
毫秒。
void reset() 🔗
强制断开对等体。对等体代表的外部主机不会收到断开连接的通知,并且会在与本地主机的连接上超时。
Error send(channel: int, packet: PackedByteArray, flags: int) 🔗
将数据包 packet
加入通过通道 channel
发送的队列。可用的数据包标志见 FLAG_*
常量。
void set_timeout(timeout: int, timeout_min: int, timeout_max: int) 🔗
设置对等体的超时参数。超时参数控制对等体因无法确认可靠流量而超时的方式和时间。超时值以毫秒表示。
timeout
是一个系数,乘以基于平均往返时间的值,将确定可靠数据包的超时限制。当达到该限制时,超时将加倍,如果该限制已达到 timeout_min
,则对等体将断开连接。另一方面,timeout_max
参数定义了一个固定的超时时间,在该时间内必须确认所有数据包,否则对等体将被丢弃。
void throttle_configure(interval: int, acceleration: int, deceleration: int) 🔗
为对等体配置节流参数。
不可靠的数据包会被 ENet 丢弃,以应对与对等体的互联网连接的各种情况。节流表示一个不可靠数据包不应被丢弃并因此由 ENet 将其发送到对等体的概率。通过测量指定 interval
内可靠数据包往返时间的波动,ENet 将按照 acceleration
参数中指定的量增加概率,或者按照 deceleration
参数中指定的量降低概率(两者都是与 PACKET_THROTTLE_SCALE 的比率)。
当节流的值为 PACKET_THROTTLE_SCALE 时,ENet 不会丢弃任何不可靠的数据包,因此所有不可靠数据包以 100% 的概率将被发送。
当节流的值为 0
时,ENet 将丢弃所有不可靠的数据包,因此所有不可靠数据包以 0% 的概率将被发送。
节流的中间值表示发送不可靠数据包的 0% 到 100% 之间的中间概率。考虑本地和外部主机的带宽限制,以确定节流概率的合理限制,即使在最好的条件下也不应超过该限制。