PacketPeer
继承: RefCounted
< Object
派生: ENetPacketPeer
, MultiplayerPeer
, PacketPeerDTLS
, PacketPeerExtension
, PacketPeerStream
, PacketPeerUDP
, WebRTCDataChannel
, WebSocketPeer
Abstraction and base class for packet-based protocols.
描述
PacketPeer is an abstraction and base class for packet-based protocols (such as UDP). It provides an API for sending and receiving packets both as raw data or variables. This makes it easy to transfer data over a protocol, without having to encode data as low-level bytes or having to worry about network ordering.
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.
属性
方法
int | get_available_packet_count ( ) const1 |
PackedByteArray | get_packet ( ) |
Error | get_packet_error ( ) const1 |
Variant | get_var ( allow_objects: bool = false ) |
Error | put_packet ( buffer: PackedByteArray ) |
Error | put_var ( var: Variant , full_objects: bool = false ) |
属性说明
int
encode_buffer_max_size = 8388608
Maximum buffer size allowed when encoding Variant
s. Raise this value to support heavier memory allocations.
The put_var
method allocates memory on the stack, and the buffer used will grow automatically to the closest power of two to match the size of the Variant
. If the Variant
is bigger than encode_buffer_max_size
, the method will error out with @GlobalScope.ERR_OUT_OF_MEMORY
.
方法说明
int
get_available_packet_count ( ) const1
Returns the number of packets currently available in the ring-buffer.
PackedByteArray
get_packet ( )
Gets a raw packet.
Error get_packet_error ( ) const1
Returns the error state of the last packet received (via get_packet
and get_var
).
Variant
get_var ( allow_objects: bool
= false )
Gets a Variant. If allow_objects
is true
, decoding objects is allowed.
Internally, this uses the same decoding mechanism as the @GlobalScope.bytes_to_var
method.
Warning: Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
Error put_packet ( buffer: PackedByteArray
)
Sends a raw packet.
Error put_var ( var: Variant
, full_objects: bool
= false )
Sends a Variant
as a packet. If full_objects
is true
, encoding objects is allowed (and can potentially include code).
Internally, this uses the same encoding mechanism as the @GlobalScope.var_to_bytes
method.
本方法通常需要用户覆盖才能生效。
本方法无副作用,不会修改该实例的任何成员变量。
本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。
本方法用于构造某个类型。
调用本方法无需实例,可直接使用类名进行调用。
本方法描述的是使用本类型作为左操作数的有效运算符。
这个值是由下列位标志构成位掩码的整数。
无返回值。