StreamPeer

Inherits: Reference < Object

Inherited By: StreamPeerBuffer, StreamPeerGDNative, StreamPeerSSL, StreamPeerTCP

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

描述

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

属性

bool

big_endian

false

方法

int

get_16 ( )

int

get_32 ( )

int

get_64 ( )

int

get_8 ( )

int

get_available_bytes ( ) const

Array

get_data ( int bytes )

float

get_double ( )

float

get_float ( )

Array

get_partial_data ( int bytes )

String

get_string ( int bytes=-1 )

int

get_u16 ( )

int

get_u32 ( )

int

get_u64 ( )

int

get_u8 ( )

String

get_utf8_string ( int bytes=-1 )

Variant

get_var ( bool allow_objects=false )

void

put_16 ( int value )

void

put_32 ( int value )

void

put_64 ( int value )

void

put_8 ( int value )

Error

put_data ( PoolByteArray data )

void

put_double ( float value )

void

put_float ( float value )

Array

put_partial_data ( PoolByteArray data )

void

put_string ( String value )

void

put_u16 ( int value )

void

put_u32 ( int value )

void

put_u64 ( int value )

void

put_u8 ( int value )

void

put_utf8_string ( String value )

void

put_var ( Variant value, bool full_objects=false )

属性说明

Default

false

Setter

set_big_endian(value)

Getter

is_big_endian_enabled()

true 时,该 StreamPeer 进行编解码时会使用大端格式。

方法说明

  • int get_16 ( )

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


  • int get_32 ( )

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


  • int get_64 ( )

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


从流中获取一个有符号字节。


  • int get_available_bytes ( ) const

返回该 StreamPeer 可用的字节数。


返回接收到的块数据。可以使用 bytes 参数设置所需接收的字节数。如果可用的字节数不足,函数会阻塞至接收到所需字节数为止。该函数返回两个值,一个 Error 错误码以及一个数据数组。


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


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


返回接收到的块数据。可以使用“bytes”参数设置所需接收的字节数。如果可用的字节数不足,函数会阻塞至接收到所需字节数为止。该函数返回两个值,一个 Error 错误码以及一个数据数组。


从流中获取一个字节长度为 bytes 的字符串。如果 bytes 为负(默认),会按照 put_string 的逆向操作从流中读取长度。


  • int get_u16 ( )

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


  • int get_u32 ( )

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


  • int get_u64 ( )

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


  • int get_u8 ( )

从流中获取一个无符号字节。


从流中获取一个字节长度为 bytes 的 UTF-8 字符串(将发送的字符串解码为 UTF-8)。如果 bytes 为负(默认),会按照 put_utf8_string 的逆向操作从流中读取长度。


从流中获取一个 Variant。如果 allow_objecttrue,则会允许解码出对象。

警告: 反序列化的对象可能包含会被执行的代码。如果序列化的对象来自不可信的来源,请勿使用该选项,以免造成远程代码执行等安全威胁。


  • void put_16 ( int value )

向流中放入一个有符号 16 位值。


  • void put_32 ( int value )

向流中放入一个有符号 32 位值。


  • void put_64 ( int value )

向流中放入一个有符号 64 位值。


  • void put_8 ( int value )

向流中放入一个有符号字节。


通过连接发送块数据,数据完成发送前会阻塞。该函数返回 Error 错误码。


  • void put_double ( float value )

向流中放入一个双精度浮点数。


  • void put_float ( float value )

向流中放入一个单精度浮点数。


通过连接发送数据。如果数据无法一次性发完,则仅会发送部分数据。该函数返回两个值,一个 Error 错误码以及一个整数,表示实际发送的数据量。


  • void put_string ( String value )

向流中放入一个以零结尾的 ASCII 字符串,前缀一个表示其长度的 32 位无符号整数。

注意: 如果想发送不包含长度前缀的 ASCII 字符串,可以使用 put_data

  1. put_data("Hello world".to_ascii())

  • void put_u16 ( int value )

向流中放入一个无符号 16 位值。


  • void put_u32 ( int value )

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


  • void put_u64 ( int value )

向流中放入一个无符号 64 位值。


  • void put_u8 ( int value )

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


  • void put_utf8_string ( String value )

向流中放入一个以零结尾的 UTF-8 字符串,前缀一个表示其长度的 32 位无符号整数。

注意: 如果想发送不包含长度前缀的 UTF-8 字符串,可以使用 put_data

  1. put_data("Hello world".to_utf8())

  • void put_var ( Variant value, bool full_objects=false )

向流中放入一个 Variant。如果 full_objectstrue,则会允许将对象编码(其中可能包含代码)。