方法
GioSocketreceive
自: 2.22
声明 [源]
gssize
g_socket_receive (
GSocket* socket,
gchar* buffer,
gsize size,
GCancellable* cancellable,
GError** error
)
描述 [源]
从套接字接收数据(最多 size
字节)。这主要用于面向连接的套接字;它与将 address
设置为 NULL
的 g_socket_receive_from()
相同。
对于 G_SOCKET_TYPE_DATAGRAM
和 G_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
;调用者将拥有数据,并负责释放它。