这学期才刚接触网络和Qt编程,就整天泡在这两种资料中。。。
本来学习应该循序渐进的,没办法,项目要求在原来项目上添加Qt通信模块,要求有一个服务器,多个客户端进行信息的交互。。。
什么都还不会,就干这个这么高深的东西,纠结。。。。
好吧,发泄完了。来点实际的东西吧!!一点一点的累积,一点一点的学习。。
.pro工程文件添加 QT += network
.h文件添加头文件 #include <QtNetwork>
获取各种网络接口、设备名等等
QList<QNetworkInterface>list = QNetworkInterface::allInterfaces();//获取所有网络接口的列表
foreach(QNetworkInterface interface,list)//遍历每个网络接口
{
qDebug() << "Device:" << interface.name();//设备名
qDebug() << "HardwareAddress:" << interface.hardwareAddress();//硬件地址
//获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
QList<QNetworkAddressEntry> entryList = interface.addressEntries();
foreach(QNetworkAddressEntry entry,entryList)//遍历每一个IP地址条目
{
qDebug() << tr("-------------------------------------------------------");
qDebug() << "IP Address:" << entry.ip().toString();//IP地址
qDebug() << "Netmask:" << entry.netmask().toString();//子网掩码
qDebug() << "Broadcast:" << entry.broadcast().toString();//广播地址
qDebug() << tr("-------------------------------------------------------");
}
qDebug() << endl;
}
获取本地主机名称模块
//获取本机的计算机名称
QString localHostName = QHostInfo::localHostName();
qDebug() << "localHostName:" << localHostName;
//最常用的获取IP的方法。。。在Widget类中声明过的。。。。
QString Widget::getIP()
{
QList <QHostAddress> list = QNetworkInterface::allAddresses();
foreach(QHostAddress address,list)
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
{
//我们使用IPv4地址
return address.toString();//弱水三千,只取一瓢。。。
}
}
return "0.0.0.0";//不加这个会警告。。。。
}