Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
StreamPeer
继承: RefCounted < Object
派生: StreamPeerBuffer, StreamPeerExtension, StreamPeerGZIP, StreamPeerTCP, StreamPeerTLS
与流交互的抽象基类。
描述
StreamPeer 是一种抽象基类,常用于流式协议(例如 TCP)。它提供了通过流发送数据的 API,将数据作为原始数据或字符串处理。
注意:导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设中,开启 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 进行编解码时会使用大端格式。
方法说明
从流中获取有符号字节。
从流中获取有符号 16 位值。
从流中获取有符号 32 位值。
从流中获取有符号 64 位值。
int get_available_bytes() const 🔗
返回该 StreamPeer 可用的字节数。
返回接收到的块数据。可以使用 bytes
参数设置所需接收的字节数。如果可用的字节数不足,函数会阻塞至接收到所需字节数为止。该函数返回两个值,一个 Error 错误码以及一个数据数组。
从流中获取一个双精度浮点数。
从流中获取一个单精度浮点数。
从流中获取一个半精度浮点数。
Array get_partial_data(bytes: int) 🔗
返回接收到的块数据。可以使用“bytes”参数设置所需接收的字节数。如果可用的字节数不足,该函数会返回实际接收到的数量。该函数返回两个值,一个 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 位无符号整数。
注意:如果要放置 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() 方法相同。