USEGEAR

导航

手动修改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());

}
函数时用Qt下的QSttings。相关内容大家自己看

需要注意的是在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());*/


上面这段是参考网上的代码写的,根据网卡数量需要,自己写下判断就行了。

主要是在红色字体这些地方。自己根据需求来

这个是我的第一次总结。呵呵,支持下

posted on 2015-12-17 16:04  USEGEAR  阅读(3457)  评论(1编辑  收藏  举报