获取GSocket上的远程地址

时间:2013-11-26 14:33:16

标签: glib gio

我有一个GSocket,它被g_socket_listener_accept_socket()接受。我想获取连接客户端的远程地址,并认为以下代码会这样做:

GSocket *socket;
GSocketAddress *socket_address;
GInetAddress *inet_address;
gchar *ip_addr;

[...]

socket_address = g_socket_get_remote_address(socket_client, &err);
inet_address = g_object_ref(g_inet_socket_address_get_address(G_INET_SOCKET_ADDRESS(socket_address)));
ip_addr = g_inet_address_to_string(inet_address);

g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "Login from %s", ip_addr);

g_free(ip_addr);
g_object_unref(socket_address);

但是,我收到以下错误:

(process:15761): GLib-GIO-CRITICAL **: g_inet_address_to_string: assertion `G_IS_INET_ADDRESS (address)' failed

经过一些调试后,发现上面的消息是由g_inet_address_to_string()生成的。

我做错了吗?

0 个答案:

没有答案