前言

每台设备根据网络设置可能会存在多个IP,通过Qt获取IP的时候不能只取其中一个,这里的方法是通过Qt的接口取循环获取,最终生成IP地址列表,然后连接成一个字符串。

正文

废话不多说,直接看代码。

QString ALMessager::getIPAddr()
{
QStringList ips;
QList<QNetworkInterface> networkinterfaces = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface interface, networkinterfaces)
{
QNetworkInterface::InterfaceFlags t_interFlags = interface.flags();
if(t_interFlags & QNetworkInterface::IsUp &&
t_interFlags & QNetworkInterface::IsRunning)
{
foreach (QNetworkAddressEntry entry, interface.addressEntries())
{
if (entry.ip() != QHostAddress::LocalHost
&& entry.ip().protocol() == QAbstractSocket::IPv4Protocol
)
{
ips.append(entry.ip().toString());
}
}
}
}
return ips.join("|");
}

代码很简单,直接用就好。如果存在多个IP,是通过”|”来分隔开的。