StreamPeer

继承: RefCounted < Object

派生: StreamPeerBuffer, StreamPeerExtension, StreamPeerGZIP, StreamPeerTCP, StreamPeerTLS

用于与流交互的抽象基类。

描述

StreamPeer是一个抽象基类,主要用于基于流的协议(如TCP)。它提供了一个API,用于通过流作为原始数据或字符串发送和接收数据。

注意:导出到Android时,在导出项目或使用一键部署之前,请确保启用Android导出预设中的INTERNET权限。否则,任何形式的网络通信都将被Android阻止。

属性

方法

int

get_8()

int

get_16()

int

get_32()

int

get_64()

int

get_available_bytes() const

Array

get_data(bytes: int)

float

get_double()

float

get_float()

float

get_half()

Array

get_partial_data(bytes: int)

String

get_string(bytes: int = -1)

int

get_u8()

int

get_u16()

int

get_u32()

int

get_u64()

String

get_utf8_string(bytes: int = -1)

Variant

get_var(allow_objects: bool = false)

void

put_8(value: int)

void

put_16(value: int)

void

put_32(value: int)

void

put_64(value: int)

Error

put_data(data: PackedByteArray)

void

put_double(value: float)

void

put_float(value: float)

void

put_half(value: float)

Array

put_partial_data(data: PackedByteArray)

void

put_string(value: String)

void

put_u8(value: int)

void

put_u16(value: int)

void

put_u32(value: int)

void

put_u64(value: int)

void

put_utf8_string(value: String)

void

put_var(value: Variant, full_objects: bool = false)


属性说明

bool big_endian = false 🔗

  • void set_big_endian(value: bool)

  • bool is_big_endian_enabled()

如果true,则此StreamPeer将使用big-endian格式进行编码和解码。


方法说明

int get_8() 🔗

从流中获取有符号字节。


int get_16() 🔗

从流中获取有符号的16位值。


int get_32() 🔗

从流中获取有符号的32位值。


int get_64() 🔗

从流中获取有符号的64位值。


int get_available_bytes() const 🔗

返回此StreamPeer可用的字节数。


Array get_data(bytes: int) 🔗

返回带有接收字节的块数据。可以在bytes参数中请求要接收的字节数。如果没有足够的可用字节,函数将阻塞,直到收到所需的数量。此函数返回两个值,一个Error代码和一个数据数组。


float get_double() 🔗

从流中获取双精度浮点数。


float get_float() 🔗

从流中获取单精度浮点数。


float get_half() 🔗

从流中获取半精度浮点数。


Array get_partial_data(bytes: int) 🔗

返回带有接收字节的块数据。可以在“字节”参数中请求要接收的字节数。如果没有足够的可用字节,该函数将返回实际接收的字节数。此函数返回两个值,一个Error代码和一个数据数组。


String get_string(bytes: int = -1) 🔗

从流中获取一个字节长度为bytes的ASCII字符串。如果bytes为负数(默认),则将使用put_string()的反向过程从流中读取长度。


int get_u8() 🔗

从流中获取无符号字节。


int get_u16() 🔗

从流中获取无符号的16位值。


int get_u32() 🔗

从流中获取无符号的32位值。


int get_u64() 🔗

从流中获取无符号64位值。


String get_utf8_string(bytes: int = -1) 🔗

从流中获取一个字节长度为bytes的UTF-8字符串(这将解码作为UTF-8发送的字符串)。如果bytes为负数(默认),将使用put_utf8_string()的反向过程从流中读取长度。


Variant get_var(allow_objects: bool = false) 🔗

从流中获取Variant。如果allow_objectstrue,则允许解码对象。

在内部,这使用与@GlobalScope.bytes_to_var()方法相同的解码机制。

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


void put_8(value: int) 🔗

将有符号字节放入流中。


void put_16(value: int) 🔗

将有符号的16位值放入流中。


void put_32(value: int) 🔗

将有符号的32位值放入流中。


void put_64(value: int) 🔗

将有符号的64位值放入流中。


Error put_data(data: PackedByteArray) 🔗

通过连接发送数据块,必要时阻塞,直到数据发送完成。此函数返回Error代码。


void put_double(value: float) 🔗

将双精度浮点数放入流中。


void put_float(value: float) 🔗

将单精度浮点数放入流中。


void put_half(value: float) 🔗

将半精度浮点数放入流中。


Array put_partial_data(data: PackedByteArray) 🔗

通过连接发送数据块。如果无法一次发送所有数据,则只有部分数据会发送。此函数返回两个值,一个Error代码和一个整数,描述实际发送了多少数据。


void put_string(value: String) 🔗

将一个以零结尾的 ASCII 字符串放入流中,并在其前面加上一个 32 位无符号整数,表示该字符串的大小。

**注意**:要放入一个 ASCII 字符串而不预先加上其大小,可以使用 put_data()

put_data("Hello world".to_ascii_buffer())

void put_u8(value: int) 🔗

将一个无符号字节放入流中。


void put_u16(value: int) 🔗

将无符号的16位值放入流中。


void put_u32(value: int) 🔗

将一个无符号的32位值放入流中。


void put_u64(value: int) 🔗

将无符号的64位值放入流中。


void put_utf8_string(value: String) 🔗

将一个以零结尾的UTF - 8字符串放入流中,并在其前面加上一个32位无符号整数,表示该字符串的大小。

Note: 要放入一个UTF - 8字符串而不预先添加其大小,可以使用 put_data():

put_data("Hello world".to_utf8_buffer())

void put_var(value: Variant, full_objects: bool = false) 🔗

将Variant放入流中。如果full_objectstrue允许编码对象(并且可能包含代码)。

在内部,这使用与@GlobalScope.var_to_bytes()方法相同的编码机制。