PacketPeer
继承: RefCounted < Object
派生: ENetPacketPeer, MultiplayerPeer, PacketPeerDTLS, PacketPeerExtension, PacketPeerStream, PacketPeerUDP, WebRTCDataChannel, WebSocketPeer
基于包的协议的抽象和基类。
描述
PacketPeer 是基于数据包的协议(如 UDP)的抽象和基类。它提供了用于发送和接收数据包的 API,可以发送原始数据或变量。这使得在协议之间传输数据变得容易,不必将数据编码为低级字节或担心网络排序问题。
注意:导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设中,开启 INTERNET
权限。否则,任何类型的网络通信,都将被 Android 阻止。
属性
|
方法
get_available_packet_count() const | |
get_packet_error() const | |
put_packet(buffer: PackedByteArray) | |
属性说明
int encode_buffer_max_size = 8388608
🔗
编码 Variant 时允许的最大缓冲区大小。提高此值以支持更大的内存分配。
put_var 方法在栈上分配内存,使用的缓冲区将自动增长到最接近的二次方,以匹配 Variant 的大小。如果 Variant 大于 encode_buffer_max_size,则该方法将以 @GlobalScope.ERR_OUT_OF_MEMORY 出错。
方法说明
int get_available_packet_count() const 🔗
返回环形缓冲区中当前可用的数据包数。
PackedByteArray get_packet() 🔗
获取原始数据包。
Error get_packet_error() const 🔗
返回最后接收的数据包的错误状态(通过 get_packet 和 get_var)。
Variant get_var(allow_objects: bool = false) 🔗
获取 Variant。如果 allow_objects
为 true
,则允许解码出对象。
在内部,这使用与 @GlobalScope.bytes_to_var 方法相同的解码机制。
警告:反序列化出的对象可能包含会被执行的代码。如果序列化的对象来自不受信任的来源,请不要使用此选项,以避免潜在的安全威胁,例如远程代码执行。
Error put_packet(buffer: PackedByteArray) 🔗
发送一个原始数据包。
Error put_var(var: Variant, full_objects: bool = false) 🔗
将 Variant 作为数据包发送。如果 full_objects
为 true
,则允许将对象编码(其中可能包含代码)。
在内部,这使用与 @GlobalScope.var_to_bytes 方法相同的编码机制。