方法

GioSocketreceive

自: 2.22

声明 [源]

gssize
g_socket_receive (
  GSocket* socket,
  gchar* buffer,
  gsize size,
  GCancellable* cancellable,
  GError** error
)

描述 [源]

从套接字接收数据(最多 size 字节)。这主要用于面向连接的套接字;它与将 address 设置为 NULLg_socket_receive_from() 相同。

对于 G_SOCKET_TYPE_DATAGRAMG_SOCKET_TYPE_SEQPACKET 套接字,g_socket_receive() 总是从套接字中读取 0 或 1 个完整的消息。如果接收到的消息太大以至于无法适合 buffer,则将丢弃超出 size 字节的数据,且不会明确指示该事件已发生。

对于 G_SOCKET_TYPE_STREAM 套接字,g_socket_receive() 可以返回任何数量的字节,最多可达 size。如果已接收超过 size 字节的数据,则额外数据将在对 g_socket_receive() 的未来调用中返回。

如果套接字处于阻塞模式,调用将阻塞,直到有数据接收或连接关闭,或出现错误。如果没有数据可用且套接字处于非阻塞模式,将返回 G_IO_ERROR_WOULD_BLOCK 错误。要接收数据可用时的通知,请等待 G_IO_IN 条件。

出错时返回 -1 并将 error 设置为相应值。

自:2.22

参数

buffer

类型: 一个 guint8 数组

a buffer to read data into (which should be at least `size` bytes long).
此参数将由函数设置。
数组的长度在 size 参数中指定。
返回的数据由实例所有。
size

类型: gsize

您想要从套接字中读取的字节数。

cancellable

类型: GCancellable

一个 %GCancellable 或 NULL

此参数可以是 NULL
数据由方法调用者所有。
error

类型: GError **

用于记录可恢复错误的返回位置。

此参数可以是 NULL
如果返回位置不是 NULL,则必须将其初始化为 NULL GError*
如果没有错误,方法将保留初始化为 NULL 的参数。
发生错误时,参数将被设置为新的 GError;调用者将拥有数据,并负责释放它。

返回值

类型: gssize

读取的字节数,如果连接由对端关闭则为 0,发生错误时为 -1。