手动修改ARM Linux的静态IP和用QT获取和修改IP
1 1、vi /etc/network/interfaces 2 # 找到“# Wired or wireless interfaces” 3 2、注释掉 iface eth0 inet dhcp 这是自动获取ip地址 4 3、增加下面语句: 5 iface eth0 inet static 6 address 192.168.1.79 7 netmask 255.255.255.0 8 network 192.168.1.0 9 gateway 192.168.1.1 10 4、保存 11 5、/etc/init.d/networking restart
如何用QT获取和修改IP【转载】
http://blog.csdn.net/a15868717540/article/details/7165287
这是第一种方式
//读取部分 QSettings *ConfigIni = new QSettings("/etc/eth0-setting",QSettings::IniFormat,0); ui->ipInfoLineEdit->setText(ConfigIni->value("IP").toString());//IP地址 ui->maskInfoLineEdit->setText(ConfigIni->value("Mask").toString()); //子网掩码 ui->gatewayInfoLineEdit->setText(ConfigIni->value("Gateway").toString());//子网掩码 ui->dnsInfoLineEdit->setText(ConfigIni->value("DNS").toString());//DNS ui->macInfoLineEdit->setText(ConfigIni->value("MAC").toString());//mac //修改部分 void ipset::ipconfig_set_infile() { //删除原有配置文件 QDir rmfile; rmfile.remove("/etc/eth0-setting");//WINDOWS下就可以不用这两句 QSettings *ipConfigIni = new QSettings("/etc/eth0-setting",QSettings::IniFormat,0); ipConfigIni->setIniCodec("UTF-8"); //设置文件格式为UTF-8 ipConfigIni->setValue("IP",ui->ipInfoLineEdit->text());//写入配置文件中Ip配置参数 ipConfigIni->setValue("Mask",ui->maskInfoLineEdit->text());//写入配置文件中Mask配置参数 ipConfigIni->setValue("Gateway",ui->gatewayInfoLineEdit->text());//写入配置文件中Gateway配置参数 ipConfigIni->setValue("DNS",ui->dnsInfoLineEdit->text()); ipConfigIni->setValue("MAC",ui->macInfoLineEdit->text()); }
需要注意的是在linux下,覆盖不了原文件,需要调用QDir::remove函数,先删除再生成。
WINDOWS下就直接覆盖的。
第二种方法是采用QT自带的函数QList<QNetworkInterface
用这个类可以获取系统底层的网络参数,经过实践是可行的,我参考的文章:http://qt.csdn.net/articles.aspx?pointid=489&pointid2=7
/*QList<QNetworkInterface> list = QNetworkInterface::allInterfaces(); //获取所有网络接口的列表 foreach(QNetworkInterface interface,list) { //遍历每一个网络接口 if(interface.name()=="eth0")//我的端口是eth0,你的需要根据自己的来判断 { qDebug() << "Device: "<<interface.name(); //设备名 qDebug() << "HardwareAddress: "<<interface.hardwareAddress(); //硬件地址 QList<QNetworkAddressEntry> entryList = interface.addressEntries(); //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址 foreach(QNetworkAddressEntry entry,entryList) {//遍历每一个IP地址条目 if( entry.ip().toString().size() < 16)//区分IPV6和IPV4 { qDebug()<<"IP Address: "<<entry.ip().toString();
//IP地址
qDebug()<<"Netmask: " <<entry.netmask().toString();
//子网掩码
qDebug()<<"Broadcast: "<<entry.broadcast().toString();
//广播地址
ui->ipInfoLineEdit->setText(entry.ip().toString());
ui->maskInfoLineEdit->setText(entry.netmask().toString());
ui->gatewayInfoLineEdit->setText(entry.broadcast().toString());*/
主要是在红色字体这些地方。自己根据需求来
这个是我的第一次总结。呵呵,支持下