日期:2014-05-16  浏览次数:21207 次

linux 能否用Qt实现修改ip地址 广播,子网掩码,mac地址。
有没有现成的借口或者方法能实现这一功能的啊

------解决方案--------------------
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0  

这样就是设置固定 ip了。

http://os.51cto.com/art/201003/186910.htm
------解决方案--------------------
修改networkManager的配置文件啊。。。这个算是qt直接修改网络设置了。。。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

在unp第一卷里介绍的使用ioctl实现的。

那里面好像只有通过ioctl获取信息的,有没有通过ioctl设置的啊。。我找了篇文章可以会报错。

 struct   sockaddr_in   sin;
    struct   ifreq   ifr;
    int   fd;
    char *name="eth1",*address="192.168.1.175";
    bzero(&ifr,sizeof(struct ifreq));
    fd=socket(AF_INET,SOCK_DGRAM,0);
    strncpy(ifr.ifr_name,name,IFNAMSIZ);
    ifr.ifr_name[IFNAMSIZ - 1] = 0; 
    memset(&sin,0,sizeof(sin));
    sin.sin_family=AF_INET;
    sin.sin_addr.s_addr=inet_addr(address);
    memcpy(&ifr.ifr_addr,&sin,sizeof(sin));
    if(ioctl(fd,SIOCSIFADDR,&ifr)<0)
    {
        return -1;
    }

 memcpy(&ifr.ifr_addr,&sin,sizeof(sin)); 好像是这句话有问题
/usr/include/linux/if.h:137: 错误:redefinition of 'struct ifmap'
/usr/include/net/if.h:112: 错误:previous definition of 'struct ifmap'
/usr/include/linux/if.h:171: 错误:redefinition of 'struct ifreq'
/usr/include/net/if.h:127: 错误:previous definition of 'struct ifreq'
/usr/include/linux/if.h:220: 错误:redefinition of 'struct ifconf'
/usr/include/net/if.h:177: 错误:previous definition of 'struct ifconf'
这是什么错误啊?重定义?

我找了unp,插图如下
。至于你出现的错误,应该是重复定义了,应该要包含net/if.h吧,如果有linux/if.h的话,去掉应该就行了。这是我同时包含linux/if.h和net/if.h的截图:
。去掉linux/if.h就行了。

嗯嗯,可以了哈哈。多谢大神呐。不过我试了下发现这个只能临时修改ip地址。系统重启以后就无效了。想要重启以后仍然是我修改的ip是不是只能修改配置文件啊
这个我倒是没注意啊,可能得修改配置文件吧,呵呵。