今天carry对QT网络通信的http有了一定的理解,可能了解的非常基础,希望大家多提点意见哈!
QT中的网络编程是由Qt Network提供的,它提供了许多类来实现网络应用中的各种功能,下面简单实现一下获取本机信息
1,在UI界面添加如图控件
2,在.pro工程文件中添加
QT += network
在.h文件中添加要用到的库函数
#include <QHostInfo> //可以根据主机名获取到IP地址,也可以通过IP地址获取到主机名
#include <QNetworkInterface> //提供主机的IP地址和网络接口列表
3,实现按钮的槽函数以及获取本机信息的成员函数
void getHostInformation();
public slots:
void on_pushButton_clicked();
4,在.cpp的构造函数中调用
getHostInformation();类体外定义该函数
QString localHostName = QHostInfo::localHostName();
ui->lineEdit->setText(localHostName); //获取到主机名
QHostInfo hostInfo = QHostInfo::fromName(localHostName);
QList<QHostAddress> listAddress = hostInfo.addresses(); //获得到主机IP地址的列表
if(!listAddress.isEmpty())
{
ui->lineEdit_2->setText(listAddress.first().toString()); //使用IP列表的第一个值
}
4,定义Button的槽函数
QString detail="";
//一个主机的IP和网络接口列表
QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();
for(int i=0;i<list.count();i++)
{
QNetworkInterface interface=list.at(i);
//获得网络接口的名称
detail=detail+QString::fromLocal8Bit("设备:")+interface.name()+"\n";
//获得网络接口的硬件地址
detail=detail+QString::fromLocal8Bit("硬件地址:")+interface.hardwareAddress()+"\n";
//QNetworkAddressEntry里包括每个网络接口对应的一个IP地址和子网掩码以及广播地址
QList<QNetworkAddressEntry> entryList=interface.addressEntries();
//循环列出
for(int j=0;j<entryList.count();j++)
{
QNetworkAddressEntry entry=entryList.at(j);
detail=detail+"\t"+QString::fromLocal8Bit("IP 地址:")+entry.ip().toString()+"\n";
detail=detail+"\t"+QString::fromLocal8Bit("子网掩码:")+entry.netmask().toString()+"\n";
detail=detail+"\t"+QString::fromLocal8Bit("广播地址:")+entry.broadcast().toString()+"\n";
}
}
//在指定父部件前面打开具有给定标题和文本的信息消息框。
QMessageBox::information(this,QString::fromLocal8Bit("网络接口信息"),detail);
5,结果如图