如何用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<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());*/

 

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

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

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

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值