虚拟方法:
GioDatagramBasedsend_messages
自:2.48
声明 [src]
gint
send_messages (
GDatagramBased* datagram_based,
GOutputMessage* messages,
guint num_messages,
gint flags,
gint64 timeout,
GCancellable* cancellable,
GError** error
)
描述 [src]
一次从一个datagram_based
发送一个或多个数据消息。
messages
必须指向一个GOutputMessage
结构的数组,且num_messages
是该数组的长度的数字。每个GOutputMessage
结构包含发送数据的地址和指向描述要发送的每个消息的缓冲区的GOutputVector
结构的指针。
flags
修改消息的发送方式。此处的常用参数在GSocketMsgFlags
枚举中,但那里的值与系统值相同,标志按原样传递,因此也可以传递系统特定的标志。
GOutputMessage
的其余部分的处理方式请参见其文档。
如果timeout
为负,则调用将阻塞,直到发送num_messages
,取消cancellable
,或发生错误。
如果timeout
为0,则调用将发送多达num_messages
而不阻塞,或者如果没有空间发送消息,将返回G_IO_ERROR_WOULD_BLOCK
。
如果timeout
为正,则调用将根据timeout
为负的情况进行阻塞。如果在发送任何消息之前达到超时,将返回G_IO_ERROR_TIMED_OUT
,否则将返回在超时前成功发送的消息数。
当可以发送消息时,等待G_IO_OUT
条件。但请注意,即使在之前已通知G_IO_OUT
条件,您仍然可能从g_datagram_based_send_messages()
收到G_IO_ERROR_WOULD_BLOCK
。特别是在Windows平台上,这是由于底层API的工作方式导致的非常常见的现象。
如果关闭或关闭连接(例如,通过调用具有shutdown_write
设置的g_socket_close
或g_socket_shutdown
的GSocket
),则此函数的所有调用都将返回G_IO_ERROR_CLOSED
。
如果发生错误,则返回-1,并将错误设置相应地。如果无法发送零条消息,则将返回错误;否则,将返回在出现错误之前成功发送的消息数。如果取消了cancellable
,将像其他任何错误那样返回G_IO_ERROR_CANCELLED
。
自:2.48
参数
messages
-
类型:一个
GOutputMessage
结构的数组GOutputMessage
结构的数组。数组长度由 num_messages
参数指定。数据由方法的调用方拥有。 num_messages
-
类型:
guint
messages
中的元素数。 标志
-
类型:
gint
包含
GSocketMsgFlags
标志的整型。 超时
-
类型:
gint64
等待的最大时间(微秒),0 表示不阻塞,或 -1 表示无限期阻塞。
可取消
-
类型:
GCancellable
%GCancellable。
参数可以为 NULL
。数据由方法的调用方拥有。 错误
-
类型:
GError **
可恢复错误的返回位置。
参数可以为 NULL
。如果返回位置不是 NULL
,则必须将其初始化为NULL
的GError*
。如果没有错误,虚函数将保留参数初始化为 NULL
。如果发生错误,参数将被设置为一个新的 GError
分配;调用者将承担数据所有权,并负责释放它。