QtCreator 网络编程——获取网络接口信息(QHostInfo,QNetworkInterface ,QNetworkAddressEntry)

32 篇文章 0 订阅
16 篇文章 0 订阅

1. 将主机名解析为IP地址

QHostInfo 用于主机名的查找,它提供了两个便捷的静态函数

fromName():会阻塞并返回一个QHostInfo对象

	QHostInfo info = QHostInfo::fromName("www.baidu.com");
	qDebug() << "Ip:"  << info.addresses();
	QHostAddress address;
	//输出找到的IP地址
	foreach (address, info.addresses()) {
            qDebug() << address;
	    if (address.protocol() == QAbstractSocket::IPv4Protocol)
        	qDebug() << address.toString();
	}
loopupHost():异步进行,每当找到一个主机时,都会发射信号

它需要制定一个主机名,一个QObject指针和一个槽。可以执行名称查找,当完成后悔调用制定的QObject对象的槽,查找工作是在其他线程完成的。是异步的。

头文件中声明私有槽

	private slots:
    	    void lookedUp(const QHostInfo &host);


	QHostInfo::lookupHost("www.baidu.com",this,SLOT(lookedUp(QHostInfo)));//
 
	void MainWindow::lookedUp(const QHostInfo &host)
	{
	    if (host.error() != QHostInfo::NoError) {
	        qDebug() << "lookup failed:" << host.errorString() ;
        	return;
	    }
	    foreach (const QHostAddress &address, host.addresses()) {
	        qDebug() << " found address:" << address.toString() << host.hostName();
	    }
	}

2. 获取接口列表

QNetworkInterface 类来获取主机的IP地址列表和网络接口信息

    //获取所有网络接口的列表
    QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();

    foreach(QNetworkInterface interface, list) {
        //接口名称
        qDebug() << "Name:" << interface.name();
        //硬件地址
        qDebug() << "hardwareAddress:" << interface.hardwareAddress();
        //获取IP地址条目列表,每个条目包含一个IP地址,一个子网掩码和广播地址
        QList<QNetworkAddressEntry> entryList = interface.addressEntries();
 
        //遍历每一个IP地址条目
        foreach (QNetworkAddressEntry entry, entryList) {
            //IP地址
            qDebug() << "IP address:" << entry.ip().toString();
 
            qDebug() << "netmask:" << entry.netmask().toString();
            qDebug() << "Broadcast:" << entry.broadcast().toString();
        }
 
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值