Qt实现的网络小工具(学习日志)

效果如图:
效果图主要功能:
1.查询本机信息

void networkTool::findHost()
{
	QString hostName = QHostInfo::localHostName();
	QHostInfo hostInfor = QHostInfo::fromName(hostName);
	QList<QHostAddress>hostAddresss = hostInfor.addresses();
	bool ip = ui->cb_ip->isChecked();
	bool port = ui->cb_port->isChecked();
	if (ip&&port)
	{
		QList<QHostAddress> ipAddress = QNetworkInterface::allAddresses();
		std::for_each(ipAddress.begin(), ipAddress.end(), [=](QHostAddress pos) {
			appendInformation(pos);
		});
		QList<QNetworkInterface> portAddress = QNetworkInterface::allInterfaces();
		std::for_each(portAddress.begin(), portAddress.end(), [=](QNetworkInterface pos) {
			traverse(pos);
		});
	}
	else if(ip&&!port)
	{
		QList<QHostAddress> ipAddress = QNetworkInterface::allAddresses();
		std::for_each(ipAddress.begin(), ipAddress.end(), [=](QHostAddress pos) {
			appendInformation(pos);
		});
	}
	else if (!ip&&port)
	{
		QList<QNetworkInterface> portAddress = QNetworkInterface::allInterfaces();
		std::for_each(portAddress.begin(), portAddress.end(), [=](QNetworkInterface pos) {
			traverse(pos);
		});
	}
	else
	{
		ui->te_information->append("主机名:" + hostName);
		std::for_each(hostAddresss.begin(), hostAddresss.end(), [=](QHostAddress pos) {
			appendInformation(pos);
		});
	}
	
}

遍历所用到的函数:

void networkTool::appendInformation(QHostAddress pos)
{
	if(pos.protocol()== QAbstractSocket::IPv4Protocol)
	{
		ui->te_information->append("IPv4:" + pos.toString());
	}
	else if (pos.protocol() == QAbstractSocket::IPv6Protocol)
	{
		ui->te_information->append("IPv6:" + pos.toString());
	}
	else
	{
		ui->te_information->append("本机IP(其他类型):" + pos.toString());
	}
}

2.查询域名

void networkTool::findIp()
{
	if (ui->le_findConditon->text().isEmpty())return;
	QString domainName = ui->le_findConditon->text();
	ui->te_information->append("查询域名为:" + domainName);
	QHostInfo::lookupHost(domainName, this, SLOT(on_find(const QHostInfo & )));
}
void networkTool::on_find(const QHostInfo& hostInfo)
{
	QList<QHostAddress> address = hostInfo.addresses();
	std::for_each(address.begin(), address.end(), [=](QHostAddress pos) {
		appendInformation(pos); 
	});
}

lookupHost为静态函数,三个参数分别为:主机名、所在类、成功后执行的槽函数

 QHostInfo::lookupHost(domainName, this, SLOT(on_find(const QHostInfo & )));

以上就是程序的主要代码,如有什么问题请评论留言。
如需源码参考请转至资源下载中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pointer=NULL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值