ENetPacketPeer¶
继承: PacketPeer < RefCounted < Object
ENetPeer 的包装类。
描述¶
A PacketPeer implementation representing a peer of an ENetConnection.
This class cannot be instantiated directly but can be retrieved during ENetConnection.service() or via ENetConnection.get_peers().
Note: When exporting to Android, make sure to enable the INTERNET permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android.
方法¶
get_channels() const |
|
get_packet_flags() 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 🔗
将要发送的数据包标记为不可靠,即使数据包太大且需要分片(增加其被丢弃的机会)。
方法说明¶
返回为与对等体通信而分配的通道数。
int get_packet_flags() const 🔗
返回接收队列中下一个数据包的 ENet 标志。可用的数据包标志见 FLAG_* 常量。请注意,并非所有标志都会从发送端复制到接收端。
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 不会丢弃任何不可靠的数据包,因此所有不可靠的数据包都将被完整发送。
当节流阀的值为 0 时, ENet 会丢弃所有不可靠的数据包,因此所有不可靠数据包的发送比例将为 0%。
节流阀的中间值代表了在 0% 到 100% 之间发送不可靠数据包的概率的中间值。同时考虑到本地和远程主机的带宽限制,以确定一个合理的节流概率上限,超过这个上限即使在最佳条件下也不应提高。