1、Qt数据库中提供QtNetwork Module中的QHostInfo、QHostAddress、QNetworkInterface和QNetAddressEntry等类来查询网络参数。QNetworkInterface类提供了程序所运行的主机IP地址和网络接口信息的列表,在一个网络接口信息中,包括一个或多个IP地址,每一个IP地址又包括和它相关的子网掩码和广播地址。它们三者别封装在一个对象中QNetworkAddressEntry,网络接口信息也包括了硬件地址信息。1完成界面运行出结果3、关键实现代码及注解1. 在NetworkI文件中,添加QT += network2. 在头文件中添加如下
2、代码:#include QNetworkInterfacepublic:void getHostInformation();public slots:void slotDetail();对QHostInfo、QNetworkInterface进行声明,添加槽函数。3. 在源文件中添加代码。其中在构造函数的最后添加:getHostInformation(); /用于取得主机信息connect(detailBtn,SIGNAL(clicked(),this,SLOT(slotDetail();4. getHostInformation()函数用于取得主机信息。具体实现代码如下:void Netwo
3、rkInformation:getHostInformation() QString localHostName = QHostInfo:localHostName();/取得本机主机名 LineEditLocalHostName-setText(localHostName); QHostInfo hostInfo = QHostInfo:fromName(localHostName);/依照主机名取得相关主机信息,包括IP地址等。QHostInfo:fromName()函数通过主机名查找IP地址信息。 QList listAddress = hostInfo.addresses();/取得主
4、机的IP地址列表 if(!listAddress.isEmpty()/取得的主机IP地址列表可能为空。在不为空的情形下利用第一个IP地址。 LineEditAddress-setText(listAddress.first().toString(); 注释见上。25. slotDetail()函数取得与网络接口相关的信息,具体实现代码如下:slotDetail()/取得与网络接口相关的信息 QString detail=; list=QNetworkInterface:allInterfaces();/QNetworkInterface类提供了一个主机IP地址和网络接口的列表 for(int
5、i=0;i entryList=interface.addressEntries(); /每一个网络接口包括0个或多个IP地址,每一个IP地址有选择性地与一个子网掩码和(或)一个广播地址相关联 /QNetworkAddressEntry类存储了被网络接口支持的一个IP地址,同时还包括与之相关的子网掩码和广播地址 for(int j=0;j 声明,为了在Line21-32添加槽函数QTimer void StartBtnClicked(); void timeout();private: QLabel *TimerLabel; QLineEdit *TextLineEdit; QPushButt
6、on *StartBtn; QVBoxLayout *mainLayout; int port; bool isStarted; QUdpSocket *udpSocket;QTimer *timer;:connect(StartBtn,SIGNAL(clicked(),this,SLOT(StartBtnClicked(); port =6665;/设置UDP的端口号参数,效劳器按时向此端口发送广播消息 isStarted=false; udpSocket = new QUdpSocket(this); timer = new QTimer(this);/创建一个QUdpSocket con
7、nect(timer,SIGNAL(timeout(),this,SLOT(timeout();/按时发送广播信息4. StartBtnClicked()函数的具体代码:void UdpServer:StartBtnClicked()/“开始”按钮函数的设定isStarted) StartBtn-setText(u8停止); timer-start(1000); isStarted =true; else开始 isStarted = false;stop();5.timeout()函数完成了向端口发送广播消息的功能:timeout()/完成向端口发送广播信息的功能 QString msg = TextLineEdit-text(); int length=0; if(msg=) return; if(length=udpSocket-writeDatagram(msg.toLatin1(),msg.length(),QHostAddress:Broadcast,port)!=msg.length() /QHostAddress:Broadcast指定向广播地址发送客户端:1.在中
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1