StreamPeer¶
继承: RefCounted < Object
派生: StreamPeerBuffer, StreamPeerExtension, StreamPeerGZIP, StreamPeerTCP, StreamPeerTLS
用于与流交互的抽象基类。
描述¶
StreamPeer是一个抽象基类,主要用于基于流的协议(如TCP)。它提供了一个API,用于通过流作为原始数据或字符串发送和接收数据。
注意:导出到Android时,在导出项目或使用一键部署之前,请确保启用Android导出预设中的INTERNET权限。否则,任何形式的网络通信都将被Android阻止。
属性¶
|
方法¶
get_8() |
|
get_16() |
|
get_32() |
|
get_64() |
|
get_available_bytes() const |
|
get_half() |
|
get_partial_data(bytes: int) |
|
get_string(bytes: int = -1) |
|
get_u8() |
|
get_u16() |
|
get_u32() |
|
get_u64() |
|
get_utf8_string(bytes: int = -1) |
|
void |
|
void |
|
void |
|
void |
|
put_data(data: PackedByteArray) |
|
void |
put_double(value: float) |
void |
|
void |
|
put_partial_data(data: PackedByteArray) |
|
void |
put_string(value: String) |
void |
|
void |
|
void |
|
void |
|
void |
put_utf8_string(value: String) |
void |
属性说明¶
如果true,则此StreamPeer将使用big-endian格式进行编码和解码。
方法说明¶
从流中获取有符号字节。
从流中获取有符号的16位值。
从流中获取有符号的32位值。
从流中获取有符号的64位值。
int get_available_bytes() const 🔗
返回此StreamPeer可用的字节数。
返回带有接收字节的块数据。可以在bytes参数中请求要接收的字节数。如果没有足够的可用字节,函数将阻塞,直到收到所需的数量。此函数返回两个值,一个Error代码和一个数据数组。
从流中获取双精度浮点数。
从流中获取单精度浮点数。
从流中获取半精度浮点数。
Array get_partial_data(bytes: int) 🔗
返回带有接收字节的块数据。可以在“字节”参数中请求要接收的字节数。如果没有足够的可用字节,该函数将返回实际接收的字节数。此函数返回两个值,一个Error代码和一个数据数组。
String get_string(bytes: int = -1) 🔗
从流中获取一个字节长度为bytes的ASCII字符串。如果bytes为负数(默认),则将使用put_string()的反向过程从流中读取长度。
从流中获取无符号字节。
从流中获取无符号的16位值。
从流中获取无符号的32位值。
从流中获取无符号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_objects为true,则允许解码对象。
在内部,这使用与@GlobalScope.bytes_to_var()方法相同的解码机制。
警告:反序列化对象可能包含被执行的代码。如果序列化对象来自不受信任的来源,请不要使用此选项以避免潜在的安全威胁,例如远程代码执行。
将有符号字节放入流中。
将有符号的16位值放入流中。
将有符号的32位值放入流中。
将有符号的64位值放入流中。
Error put_data(data: PackedByteArray) 🔗
通过连接发送数据块,必要时阻塞,直到数据发送完成。此函数返回Error代码。
void put_double(value: float) 🔗
将双精度浮点数放入流中。
void put_float(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())
PutData("Hello World".ToAsciiBuffer());
将一个无符号字节放入流中。
将无符号的16位值放入流中。
将一个无符号的32位值放入流中。
将无符号的64位值放入流中。
void put_utf8_string(value: String) 🔗
将一个以零结尾的UTF - 8字符串放入流中,并在其前面加上一个32位无符号整数,表示该字符串的大小。
Note: 要放入一个UTF - 8字符串而不预先添加其大小,可以使用 put_data():
put_data("Hello world".to_utf8_buffer())
PutData("Hello World".ToUtf8Buffer());
void put_var(value: Variant, full_objects: bool = false) 🔗
将Variant放入流中。如果full_objects为true允许编码对象(并且可能包含代码)。
在内部,这使用与@GlobalScope.var_to_bytes()方法相同的编码机制。