方法

自从:2.22

声明 [src]

gboolean
g_socket_bind (
  GSocket* socket,
  GSocketAddress* address,
  gboolean allow_reuse,
  GError** error
)

描述 [源]

当创建套接字时,它会连接到一个地址族,但在这个族中并没有地址。函数 g_socket_bind() 会分配套接字的地址(有时称为名称)。

通常需要在接收到连接之前将其绑定到本地地址。(参见 g_socket_listen()g_socket_accept() 函数)。在特定情况下,也可能需要绑定用于发起连接的套接字,尽管这通常不是必需的。

如果 socket 是一个 TCP 套接字,那么 allow_reuse 控制着 SO_REUSEADDR 套接字选项的设置;通常对于服务端套接字(你将最终在它们上调用 g_socket_accept())应该是 TRUE,而对于客户端套接字应该是 FALSE。(如果在服务端套接字上未能设置此标志,如果服务器程序停止后又立即启动,则可能导致 g_socket_bind() 返回 G_IO_ERROR_ADDRESS_IN_USE 错误。)

如果 socket 是一个 UDP 套接字,那么 allow_reuse 决定了是否允许其他 UDP 套接字同时绑定到相同的地址。特别是,您可以有几个 UDP 套接字绑定到相同的地址,并且它们将接收发送到该地址的所有多播和广播数据包。(向具有多个监听器的地址发送单播 UDP 数据包的行为是没有定义的。)

自 2.22 版本以来可用。

参数

地址

类型: GSocketAddress

指定本地地址的 GSocketAddress

数据由调用方法的所有者拥有。
allow_reuse

类型: gboolean

是否允许重用此地址。

error

类型: GError **

可恢复错误 的返回位置。

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

返回值

类型: gboolean

成功时返回 TRUE,出错误时返回 FALSE