USEGEAR

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

手动修改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   USEGEAR  阅读(3754)  评论(1编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示