PDA

View Full Version : QNetworkInterface get IP



pdoria
3rd January 2008, 07:35
Since this is my first post... HI ALL!

Let me start by saying that I'm a uber nOOb at C++ after 20 years or so not using it, so I'm pretty much getting in touch with the basics... :o

As to my question:
I simply want to extract the IP from a network interface.


QNetworkAddressEntry entry;
QNetworkInterface ifObj = QNetworkInterface::interfaceFromName(INTERFACE);
qDebug() << ifObj;


Returns:

QNetworkInterface(name = "eth1", hardware address = "00:13:CE:93:54:B6", flags = IsUp IsRunning CanBroadcast CanMulticast , entries = ((address = QHostAddress("192.168.3.246") , netmask = QHostAddress("255.255.255.0") , broadcast = QHostAddress("192.168.3.255") ) , (address = QHostAddress("FE80:0:0:0:213:CEFF:FE93:54B6") , netmask = QHostAddress("FFFF:FFFF:FFFF:FFFF:0:0:0:0") ) ) )

I want to get that first QHostAddress("192.168.3.246").

How can I achieve this? The functions/methods available don't *seem* to go my way...

Already thankful for any advice.
Best regards,
Pedro Doria Meunier

jpn
3rd January 2008, 08:27
Since this is my first post... HI ALL!
Hi and welcome!


I simply want to extract the IP from a network interface.
Try something like this:


QNetworkInterface iface = QNetworkInterface::interfaceFromName(INTERFACE);
QList<QNetworkAddressEntry> entries = iface.addressEntries();
if (!entries.isEmpty())
{
QNetworkAddressEntry entry = entries.first();
QHostAddress ip = entry.ip();
...
}

pdoria
3rd January 2008, 08:48
Thank you JPN!

That did it!

This is how the function ended up to be:


QHostAddress getHostIp() {
QNetworkInterface iface = QNetworkInterface::interfaceFromName(INTERFACE);
QList<QNetworkAddressEntry> entries = iface.addressEntries();
if (!entries.isEmpty()) {
QNetworkAddressEntry entry = entries.first();
QHostAddress ip = entry.ip();
return ip;
}
return (QHostAddress::Null);
}