PacketPeer

Inherits: Reference < Object

Inherited By: NetworkedMultiplayerPeer, PacketPeerDTLS, PacketPeerGDNative, PacketPeerStream, PacketPeerUDP, WebRTCDataChannel, WebSocketPeer

基于包的协议的抽象和基类。

描述

PacketPeer是基于数据包的协议(如UDP)的抽象和基类。它提供了一个API,用于发送和接收作为原始数据或变量的数据包。这使得通过协议传输数据变得很容易,而不必将数据编码为低级字节或担心网络顺序。

属性

bool

allow_object_decoding

false

int

encode_buffer_max_size

8388608

方法

int

get_available_packet_count ( ) const

PoolByteArray

get_packet ( )

Error

get_packet_error ( ) const

Variant

get_var ( bool allow_objects=false )

Error

put_packet ( PoolByteArray buffer )

Error

put_var ( Variant var, bool full_objects=false )

属性说明

  • bool allow_object_decoding

Default

false

Setter

set_allow_object_decoding(value)

Getter

is_object_decoding_allowed()

已废弃。 你应该使用 get_varput_var 参数来代替它。

如果true,多人游戏API将允许在RPC/RSETs期间对对象进行编码和解码。

警告: 反序列化的对象可能包含会被执行的代码。如果序列化的对象来自不受信任的来源,请不要使用这个选项,以避免潜在的安全威胁,如远程代码执行。


  • int encode_buffer_max_size

Default

8388608

Setter

set_encode_buffer_max_size(value)

Getter

get_encode_buffer_max_size()

编码Variant时允许的最大缓冲区大小。提高此值以支持更大的内存分配。

put_var方法在堆栈上分配内存,使用的缓冲区将自动增长到最接近的二次方,以匹配Variant的大小。如果Variant大于 encode_buffer_max_size,则该方法将以@GlobalScope.ERR_OUT_OF_MEMORY出错。

方法说明

  • int get_available_packet_count ( ) const

返回环形缓冲区中当前可用的数据包数。


获取原始数据包。


  • Error get_packet_error ( ) const

返回最后接收的数据包的错误状态(通过get_packetget_var)。


获取一个变量。如果allow_objectsallow_object_decodingtrue,则允许对对象进行解码。

警告:反序列化对象可能包含执行的代码。如果序列化对象来自不受信任的源,请不要使用此选项,以避免潜在的安全威胁,如远程代码执行。


发送一个原始数据包。


Variant作为数据包发送。如果full_objectsallow_object_decodingtrue,则允许对对象进行编码(并且可能包含代码)。