接口
GioSocketConnectable
描述 [源代码]
interface Gio.SocketConnectable : GObject.Object
描述一个或多个潜在套接字端点的对象实现GSocketConnectable
。调用者可以使用g_socket_connectable_enumerate()
来获取一个GSocketAddressEnumerator
,尝试依次尝试每个套接字地址,直到成功,如下面的示例代码所示。
MyConnectionType *
connect_to_host (const char *hostname,
guint16 port,
GCancellable *cancellable,
GError **error)
{
MyConnection *conn = NULL;
GSocketConnectable *addr;
GSocketAddressEnumerator *enumerator;
GSocketAddress *sockaddr;
GError *conn_error = NULL;
addr = g_network_address_new (hostname, port);
enumerator = g_socket_connectable_enumerate (addr);
g_object_unref (addr);
// Try each sockaddr until we succeed. Record the first connection error,
// but not any further ones (since they'll probably be basically the same
// as the first).
while (!conn && (sockaddr = g_socket_address_enumerator_next (enumerator, cancellable, error))
{
conn = connect_to_sockaddr (sockaddr, conn_error ? NULL : &conn_error);
g_object_unref (sockaddr);
}
g_object_unref (enumerator);
if (conn)
{
if (conn_error)
{
// We couldn't connect to the first address, but we succeeded
// in connecting to a later address.
g_error_free (conn_error);
}
return conn;
}
else if (error)
{
/// Either initial lookup failed, or else the caller cancelled us.
if (conn_error)
g_error_free (conn_error);
return NULL;
}
else
{
g_error_propagate (error, conn_error);
return NULL;
}
}
实例方法
g_socket_connectable_proxy_enumerate
为connectable
创建一个将返回每个地址的GProxyAddress
的GSocketAddressEnumerator
,您必须通过代理连接到这些地址。
自:2.26
g_socket_connectable_to_string
将GSocketConnectable
格式化为字符串。这是一个用于调试输出的人类可读格式,不是稳定的序列化格式。它不适合在用户界面中使用,因为它会向用户暴露太多信息。
自:2.48
接口结构
struct GioSocketConnectableIface {
GTypeInterface g_iface;
GSocketAddressEnumerator* (* enumerate) (
GSocketConnectable* connectable
);
GSocketAddressEnumerator* (* proxy_enumerate) (
GSocketConnectable* connectable
);
gchar* (* to_string) (
GSocketConnectable* connectable
);
}
提供返回一个GSocketAddressEnumerator
和GProxyAddressEnumerator
的接口。
接口成员
g_iface |
|
父接口。 |
|
enumerate |
|
创建一个 |
|
proxy_enumerate |
|
创建一个 |
|
to_string |
|
将连接的地址格式化为字符串以供调试。实现此方法是可选的。(自:2.48)。 |
虚拟方法
Gio.SocketConnectable.proxy_enumerate
为connectable
创建一个将返回每个地址的GProxyAddress
的GSocketAddressEnumerator
,您必须通过代理连接到这些地址。
自:2.26
Gio.SocketConnectable.to_string
将GSocketConnectable
格式化为字符串。这是一个用于调试输出的人类可读格式,不是稳定的序列化格式。它不适合在用户界面中使用,因为它会向用户暴露太多信息。
自:2.48