方法
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,则必须将其初始化为NULLGError*。如果没有错误,方法将保留初始化为 NULL的参数。发生错误时,参数将被设置为新的 GError;调用者将拥有数据,并负责释放它。