方法
自从: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
;调用者将接管数据,并负责释放它。