QT如果要进行网络编程首先需要在.pro中添加如下代码:QT += network
在头文件中包含相关头文件
#include <QHostInfo>
#include <QNetworkInterface>
![]()
void Widget::btn_click()
{
//获取主机名称
QString s=QHostInfo::localHostName();
//根据主机名获取主机其他信息
QHostInfo info=QHostInfo::fromName(s);
/*获取主机所有的网络地址,IP地址跟网卡有关系,一个主机可能存在多个网卡或者虚拟机网卡*/
QList<QHostAddress> list=info.addresses();
if(!list.isEmpty())
{
/*设置一个迭代器*/
QList<QHostAddress>::iterator i;
for(i=list.begin();i!=list.end();i++)
{
QMessageBox::information(this,"主机地址",(*i).toString());
}
}
label1->setText(s);
}
void Widget::btn_click()
{
QString detail;
/*得到本机所有的网络接口信息*/
QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();
QList<QNetworkInterface>::iterator i;
for(i=list.begin();i!=list.end();i++)
{
QNetworkInterface interface=*i;
/*获取设备名字*/
detail=tr("设备:")+interface.name()+"\n";
detail+=tr("硬件地址:")+interface.hardwareAddress()+"\n";
QList<QNetworkAddressEntry> entrylist=interface.addressEntries();
QList<QNetworkAddressEntry>::iterator j;
for(j=entrylist.begin();j!=entrylist.end();j++)
{
//
QNetworkAddressEntry entry=*j;
detail+="\t"+tr("IP地址:")+entry.ip().toString()+"\n";
detail+="\t"+tr("子网掩码:")+entry.netmask().toString()+"\n";
detail+="\t"+tr("广播地址:")+entry.broadcast().toString()+"\n";
}
QMessageBox::information(this,"主机信息",detail);
}
}