如何用QT读写IP。或者是获取并修改IP。WINDOWS和LINUX下都试过可行

最近在摸索如何获取和修改IP

 

这是第一种方式

//读取部分

   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

用这个类可以获取系统底层的网络参数,经过实践是可行的,我参考的文章:http://qt.csdn.net/articles.aspx?pointid=489&pointid2=7

 

 

    /*QList list = QNetworkInterface::allInterfaces();
      //获取所有网络接口的列表
    foreach(QNetworkInterface interface,list)
      {  //遍历每一个网络接口
      if(interface.name()=="eth0")//我的端口是eth0,你的需要根据自己的来判断
              {
      qDebug() << "Device: "<       //设备名
      qDebug() << "HardwareAddress: "<       //硬件地址
      QList entryList = interface.addressEntries();
      //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
    foreach(QNetworkAddressEntry entry,entryList)
                  {//遍历每一个IP地址条目

    if( entry.ip().toString().size() < 16)//区分IPV6和IPV4
                    {
    qDebug()<<"IP Address: "<                 //IP地址
    qDebug()<<"Netmask: "  <                 //子网掩码
    qDebug()<<"Broadcast: "<                 //广播地址

   ui->ipInfoLineEdit->setText(entry.ip().toString());
   ui->maskInfoLineEdit->setText(entry.netmask().toString());
   ui->gatewayInfoLineEdit->setText(entry.broadcast().toString());*/

 

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

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

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

你可能感兴趣的:(修改IP,QT中如何获取IP)