方法

GiSocketsend_message_with_timeout

自:2.60

声明 [源]

GPollableReturn
g_socket_send_message_with_timeout (
  GSocket* socket,
  GSocketAddress* address,
  const GOutputVector* vectors,
  gint num_vectors,
  GSocketControlMessage** messages,
  gint num_messages,
  gint flags,
  gint64 timeout_us,
  gsize* bytes_written,
  GCancellable* cancellable,
  GError** error
)

描述 [源]

此行为与 g_socket_send_message() 完全相同,只是超时行为的选择是由 timeout_us 参数决定的,而不是由 socket 的属性决定的。

如果出错,返回 G_POLLABLE_RETURN_FAILED 并相应地设置 error,或者如果套接字当前不可写,返回 G_POLLABLE_RETURN_WOULD_BLOCK。在这两种情况下,bytes_written 都将包含 0。

自:2.60

参数

address

类型: GSocketAddress

GSocketAddress,或 NULL

参数可以是 NULL
数据由方法调用者拥有。
向量

类型: 一个 GOutputVector 数组

GOutputVector 结构体数组的数组。

数组长度由 num_vectors 参数指定。
数据由方法调用者拥有。
num_vectors

类型: gint

vectors 中的元素数量,或 -1。

messages

类型: 一个 GSocketControlMessage* 数组

一个指向 GSocketControlMessages 数组的指针,或 NULL

参数可以是 NULL
数组长度由 num_messages 参数指定。
数据由方法调用者拥有。
num_messages

类型: gint

messages 中的元素数量,或 -1。

flags

类型: gint

包含 GSocketMsgFlags 标志的一个 int,可能还包含其他平台特定标志

timeout_us

类型: gint64

等待的最大时间(微秒),或 -1。

bytes_written

类型: gsize*

存储写入套接字中的字节数的位置。

函数会设置此参数。
参数可以是 NULL
cancellable

类型: GCancellable

一个 %GCancellable 或 NULL

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

类型: GError **

用于恢复错误的位置。

参数可以是 NULL
如果返回位置不是 NULL,则必须将其初始化为 NULL GError*
如果没有错误,方法将保留初始化为 NULL
如果出现错误,将设置一个新分配的 GError;调用者将负载数据,并负责释放它。

返回值

类型: GPollableReturn

如果所有数据都成功写入,则返回 G_POLLABLE_RETURN_OK;如果套接字当前不可写,则返回 G_POLLABLE_RETURN_WOULD_BLOCK;如果发生错误且设置了 error,则返回 G_POLLABLE_RETURN_FAILED