用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

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

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


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

代码:
#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 21:17:00
码盲路过帮顶 :em06
昵称: 枫叶饭团  时间: 2011-06-13 21:19:00
枫叶饭团 写道:
码盲路过帮顶 :em06
昵称: kumox  时间: 2011-06-13 21:48:00
Linux下的网卡检测是包含本地回环(lo)的,而Windows没有。
使用这个手段获取IP并不可靠,你可能需要使用正则等手段区别出公网IP、内网IP、以及本地回环等。


最后,void main自重,代码不缩进自重。 :em06
昵称: supercatexpert  时间: 2011-06-13 23:02:00
发表评论
昵称:
内容:
验证: