QT 获取IP地址


Qt网络编程:获取本地Ip地址:

 

[cpp]  view plain  copy
  1. //获取本地IP片地址,  
  2. QList<QHostAddress> addList = QNetworkInterface::allAddresses();  
  3.   
  4. foreach(QHostAddress address,addList)  
  5. {  
  6.     //排除IPV6,排除回环地址  
  7.     if(address.protocol() == QAbstractSocket::IPv4Protocol  
  8.             && address != QHostAddress(QHostAddress::LocalHost))  
  9.     {  
  10.         //输出,转换为字符串格式  
  11.         qDebug() << address.toString();  
  12.     }  
  13. }  
  14. qDebug() << "----------------------------------";  
  15.   
  16. //获取本地所有的网络接口  
  17. QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();  
  18.   
  19. foreach(QNetworkInterface inter,interface)  
  20. {  
  21.     QList<QNetworkAddressEntry> entrList = inter.addressEntries();  
  22.   
  23.     foreach(QNetworkAddressEntry entr,entrList)  
  24.     {  
  25.         QHostAddress hostIp = entr.ip();  
  26.         if(hostIp.protocol() == QAbstractSocket::IPv4Protocol &&  
  27.                 hostIp != QHostAddress(QHostAddress::LocalHost))  
  28.         {  
  29.             //获取输出名称  
  30.             qDebug()<<QString("名称:%1").arg(inter.humanReadableName());  
  31.             //获取输出ip地址  
  32.             qDebug() << QString("HostIp:%1").arg(hostIp.toString());  
  33.             //获取输出子网掩码  
  34.             qDebug() << QString("NetMask:%1").arg(entr.netmask().toString());  
  35.             //获取并输出mac地址  
  36.             qDebug() << QString("HardAddress:%1").arg(inter.hardwareAddress());  
  37.             qDebug() << "----------------------------------";  
  38.         }  
  39.     }  
  40.   
  41. }  

一般结合下拉框使用

 






本文转自:

http://blog.youkuaiyun.com/jiezhj/article/details/37511603


Qt框架中,获取IP地址及其所属网段通常需要借助系统的网络API或者第三方库。Qt本身并没有内置的功能来直接获取IP地址的详细信息,如子网掩码。但是你可以通过以下步骤利用C++编写一个小工具来实现这个功能: 1. 包含必要的库:`QNetworkInterface`用于操作网络接口,`QHostAddress`处理IP地址。 ```cpp #include <QObject> #include <QNetworkInterface> #include <QHostAddress> ``` 2. 创建一个方法,例如`getIpAddressAndSubnet()`,来获取本地IP地址和子网掩码: ```cpp QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces(); for (const QNetworkInterface &interface : interfaces) { if (interface.flags() & QNetworkInterface::IsUp) { QList<QPair<QHostAddress, qint16>> addresses = interface.addresses(); for (const QPair<QHostAddress, qint16>& address : addresses) { if (address.first.isIPv4()) { QString ipAddress = address.first.toString(); quint32 subnet = interface.subnet().toString().toUInt(); // 这里可以按照需求打印或返回IP地址和子网掩码 qDebug() << "IP Address: " << ipAddress << ", Subnet Mask: " << subnet; } } } } ``` 3. 调用这个方法并处理结果: ```cpp int main(int argc, char *argv[]) { QApplication app(argc, argv); QObject::connect(&app, &QApplication::aboutToQuit, &app, [] { qApp->quit(); }); getIpAddressAndSubnet(); return app.exec(); } ``` 在这个例子中,你需要将结果适当地封装起来,以便用户可以方便地使用。如果你需要更高级的功能,比如只获取特定接口或有其他特定条件,可以根据实际情况调整代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值