PacketPeer¶
继承: RefCounted < Object
派生: ENetPacketPeer, MultiplayerPeer, PacketPeerDTLS, PacketPeerExtension, PacketPeerStream, PacketPeerUDP, WebRTCDataChannel, WebSocketPeer
基于包的协议的抽象和基类。
描述¶
PacketPeer是基于数据包的协议(如UDP)的抽象和基类。它提供了一个API,用于作为原始数据或变量发送和接收数据包。这使得通过协议传输数据变得容易,而不必将数据编码为低级字节或担心网络排序。
注意:导出到Android时,在导出项目或使用一键部署之前,请确保启用Android导出预设中的INTERNET权限。否则,任何形式的网络通信都将被Android阻止。
属性¶
|
方法¶
get_available_packet_count() const |
|
get_packet_error() const |
|
put_packet(buffer: PackedByteArray) |
|
属性说明¶
int encode_buffer_max_size = 8388608 🔗
编码Variants时允许的最大缓冲区大小。提高此值以支持更重的内存分配。
put_var()方法在堆栈上分配内存,使用的缓冲区会自动增长到最接近的2次方,以匹配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) 🔗
获取变体。如果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()方法相同的编码机制。