QNetworkInterface 类

QNetworkInterface 是一个管理网络连接的类,利用他可以枚举本机的网络连接并获取其属性。比较常用的函数有:

  • QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() 获取地址列表,应用如下:
//原型 QList<QNetworkAddressEntry> QNetworkInterface::addressEntries () const
//比如获取本地所有 ip 和 netmask
//allInterfaces() 是一个静态函数,用于获取本机所以连接。
QList<QNetworkInterface> networkInterface = QNetworkInterface::allInterfaces();
for (QList<QNetworkInterface>::const_iterator i = networkInterface.const_Begin(); i != networkInterface.const_End(); ++i) {
  //获取连接地址列表
  QList<QNetworkAddressEntry> addressEntriesList = (*i).addressEntries();
  for (QList<QNetworkAddressEntry>::const_iterator j = addressEntriesList.constBegin(); j != addressEntriesList.constEnd(); ++j) {
    //输出 ip
    qDebug() << (*i).ip().toString();
    //输出 netmask
    qDebug() << (*i).ip().toString();
  }
}
  • QString QNetworkInterface::hardwareAddress() 获取网卡 mac 地址。例如,在上例中:
(*i).hardwareAddress();
  • QString QNetworkInterface::name() 获取网卡名称。这个名称是系统分配的,是一个字符串,在 windows 平台,可以将此字符串作为参数传递给 api,用以获取或者设置其他 Qt 不能获取或设置的属性,比如网关、DNS、网卡类型、wins 服务器的获取与设置,可以参考 windows api 中的 getAdapterInfo 和 getPerAdaterInfo 来实现这些功能。
  • QNetworkInterface QNetworkInterface::interfaceFormName(),通过名称来获取一个QNetworkInterface的对象或指针,此处名称也是上述所指名称。
  • QString QNetworkInterface::humanReadableName(),获取网络连接名称,此处名称一般指“本地连接”、“eth0”及“lo”等。
  • int QNetworkInterface::index(),网卡索引,这是系统在启动时为网卡分配的索引,是一个整型值,当然也可以成为 Qt 与系统 api 之间的接口,就像上的是 name() 一样。
  • QNetworkInterface QNetworkInterface::interfaceFromIndex ( int index ),通过索引值来获取一个QNetworkInterface的对象或指针,此处索引值即为上述所指整型值。
  • QList<QHostAddress> QNetworkInterface::allAddresses (),获取地址列表,此处只返回IP地址列表,所以如果只想获取IP地址的话,可以用此函数,例如:
//allInterfaces() 是一个静态函数,用于获取本机所以连接。
QList<QNetworkInterface> networkInterface = QNetworkInterface::allInterfaces();
for (QList<QNetworkInterface>::const_iterator i = networkInterface.const_Begin(); i != networkInterface.const_End(); ++i) {
  //获取ip地址列表
  QList<QHostAddress> addressesList = (*i).allAddresses();
  for (QList<QHostAddress>::const_iterator j = addressesList.constBegin(); j != addressesList.constEnd(); ++j) {
    //输出 ip
    qDebug() << (*i).toString();
  }
}

About the Author

在讀研究生,化學/化工專業,主要關注學佛、計算化學、C++、Python、計算機、古文化、哲學、思維方向,渴求與有共同興趣的朋友交流,詳情請查看“關于”頁面。

Recent Comments

  1. 勿慢牛 说道:

    Qt確實沒有提供這方面的功能,只能通過第三方或者系統函數來攻取了。

    回复

  2. luckforyou 说道:

    文中说,qt无法获取,OH no

    回复

  3. luckforyou 说道:

    如何获取网关?

    回复

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

Copyright © 2012 勿慢牛 - All Rights Reserved. - Admin - Powered by WordPress