基于glib gtk gio的聊天工具开发框架

我快无语了,最近在写一个IM。我设计了一个函数自动获取IP(基于GLIB,gio),在win下代码运行正常。然而,拿到ubuntu 下的时候,发现它获取的是“127.0.1.1”(我没打错,你也没看错。不是”127.0.0.1“,而且是127.0.1.1)在终端里也ping得通这个IP


好了, 那个大虾帮我看看,怎么改这代码?

代码:
#include<gio/gio.h>
void main(gint argc,gchar *argv[]){

g_type_init();
GResolver* solver=g_resolver_get_default();  //新建一个分析器
GList *list=g_resolver_lookup_by_name(solver,g_get_host_name(),NULL,NULL);
g_printf("%s\n", g_inet_address_to_string(g_list_first(list)->data));//接着将GInetAddress转成gchar型
g_printf("%s\n", g_inet_address_to_string(g_list_last(list)->data));//如果你有两张网卡的话,而且都分配置了IP。这里的和上面的值都是不同的
}


作者: lifulinghan   发布时间: 2011-06-13

码盲路过帮顶

作者: 枫叶饭团   发布时间: 2011-06-13

枫叶饭团 写道:
码盲路过帮顶

作者: kumox   发布时间: 2011-06-13

Linux下的网卡检测是包含本地回环(lo)的,而Windows没有。
使用这个手段获取IP并不可靠,你可能需要使用正则等手段区别出公网IP、内网IP、以及本地回环等。


最后,void main自重,代码不缩进自重。

作者: supercatexpert   发布时间: 2011-06-13