当前位置: 首页> 健康> 养生 > 字节跳动小程序开发者平台_智慧城市_长春做网站推荐选吉网传媒好_网站推广的方式和方法

字节跳动小程序开发者平台_智慧城市_长春做网站推荐选吉网传媒好_网站推广的方式和方法

时间:2025/7/25 22:29:29来源:https://blog.csdn.net/wuli2496/article/details/147010693 浏览次数:0次
字节跳动小程序开发者平台_智慧城市_长春做网站推荐选吉网传媒好_网站推广的方式和方法

简介

用于表示网络接口(即网卡)信息

常用接口

static QList<QNetworkInterface> allInterfaces();
static QList<QHostAddress> allAddresses();
QList<QNetworkAddressEntry> addressEntries() const;

接口类型

用枚举InterfaceType表示

enum InterfaceType {Loopback = 1,Virtual,Ethernet,Slip,CanBus,Ppp,Fddi,Wifi,Ieee80211 = Wifi,   // aliasPhonet,Ieee802154,SixLoWPAN,  // 6LoWPAN, but we can't start with a digitIeee80216,Ieee1394,Unknown = 0};

接口状态

用枚举InterfaceFlag表示

enum InterfaceFlag {IsUp = 0x1,IsRunning = 0x2,CanBroadcast = 0x4,IsLoopBack = 0x8,IsPointToPoint = 0x10,CanMulticast = 0x20};

结构

QNetworkInterface
- QSharedDataPointer<QNetworkInterfacePrivate> d
QNetworkInterfacePrivate
+ int index
+ int mtu
+ QNetworkInterface::InterfaceFlags flags
+ QNetworkInterface::InterfaceType type
+ QString name
+ QString friendlyName
+ QString hardwareAddress
+ QList<QNetworkAddressEntry> addressEntries
QHostAddress
- QExplicitlySharedDataPointer<QHostAddressPrivate> d
QHostAddressPrivate
+ QString scopeId
+ quint32 a
+ qint8 protocol
QNetworkAddressEntryPrivate
+ QHostAddress address
+ QHostAddress broadcast
+ QDeadlineTimer preferredLifetime
+ QDeadlineTimer validityLifetime
+ QNetmask netmask
+ bool lifetimeKnown
+ QNetworkAddressEntry::DnsEligibilityStatus dnsEligibility
QNetworkAddressEntry
QSharedData

QNetworkAddressEntry :用来表示网络地址实体,即包含地址,广播地址以及掩码
QHostAddress:包含地址以及协议
QHostAddressPrivate成员包含:

QString scopeId;union {Q_IPV6ADDR a6; // IPv6 addressstruct { quint64 c[2]; } a6_64;struct { quint32 c[4]; } a6_32;
};
quint32 a;    // IPv4 address
qint8 protocol;

QNetworkInterfaceManager

网络接口管理器,获取电脑上所有可用的网络接口
定义有全局静态变量

Q_GLOBAL_STATIC(QNetworkInterfaceManager, manager)

其结构为

QNetworkInterfaceManager
+ QSharedDataPointer<QNetworkInterfacePrivate> empty
+static uint interfaceIndexFromName(const QString &name)
+static QString interfaceNameFromIndex(uint index)
+QList~QSharedDataPointer~QNetworkInterfacePrivate~ ~ allInterfaces()
-QList~QNetworkInterfacePrivate *~ scan()

allInterfaces:获取所有的网络接口,先通过scan得到所有网络接口,winrt,win,unix不同平整对scan有不同实现,然后调用 postProcess作后处理

QList<QSharedDataPointer<QNetworkInterfacePrivate> > QNetworkInterfaceManager::allInterfaces()
{const QList<QNetworkInterfacePrivate *> list = postProcess(scan());QList<QSharedDataPointer<QNetworkInterfacePrivate> > result;result.reserve(list.size());for (QNetworkInterfacePrivate *ptr : list) {if ((ptr->flags & QNetworkInterface::IsUp) == 0) {// if the network interface isn't UP, the addresses are ineligible for DNSfor (auto &addr : ptr->addressEntries)addr.setDnsEligibility(QNetworkAddressEntry::DnsIneligible);}result << QSharedDataPointer<QNetworkInterfacePrivate>(ptr);}return result;
}static QList<QNetworkInterfacePrivate *> postProcess(QList<QNetworkInterfacePrivate *> list)
{// Some platforms report a netmask but don't report a broadcast address// Go through all available addresses and calculate the broadcast address// from the IP and the netmask//// This is an IPv4-only thing -- IPv6 has no concept of broadcasts// The math is://    broadcast = IP | ~netmaskfor (QNetworkInterfacePrivate *interface : list) {for (QNetworkAddressEntry &address : interface->addressEntries) {if (address.ip().protocol() != QAbstractSocket::IPv4Protocol)continue;if (!address.netmask().isNull() && address.broadcast().isNull()) {QHostAddress bcast = address.ip();bcast = QHostAddress(bcast.toIPv4Address() | ~address.netmask().toIPv4Address());address.setBroadcast(bcast);}}}return list;
}
关键字:字节跳动小程序开发者平台_智慧城市_长春做网站推荐选吉网传媒好_网站推广的方式和方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: