Qt之QUdpSocket定时器网络广播
来源:互联网 发布:客户端怎么访问数据库 编辑:程序博客网 时间:2024/06/05 10:00
UDP(用户数据报协议)是一个轻量级的,不可靠的,面向数据报的,无连接协议。当可靠性不是很重要的时候就可以使用该协议。
程序实现功能:1.设定时间发送信息 2.服务端和客户端在同一个程序 3.可以发送中文 4.Tabwidget组件简单使用
困扰:在linux运行正常,可是在window在就出现一次发三条信息,无解中!
实现效果图:
头文件:
#ifndef UDPBROADCAST_H#define UDPBROADCAST_H#include <QMainWindow>#include <QTimer>#include <QDebug>#include <QUdpSocket>#include <QTextCodec>namespace Ui { class UdpBroadcast;}class UdpBroadcast : public QMainWindow{ Q_OBJECTpublic: explicit UdpBroadcast(QWidget *parent = 0); ~UdpBroadcast();private: Ui::UdpBroadcast *ui; QTimer *m_timer; QUdpSocket *m_Server_udp; QUdpSocket *m_Client_udp;private slots: void soltTiming(); void slotBroadcast(); void slotClientConnect(); void slotClientReadMesg(); void slotTabChange(int i);};#endif // UDPBROADCAST_H
实现代码如下:
#include "UdpBroadcast.h"#include "ui_UdpBroadcast.h"UdpBroadcast::UdpBroadcast(QWidget *parent) : QMainWindow(parent), ui(new Ui::UdpBroadcast){ ui->setupUi(this); ui->spinBox_time->setValue(1); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); // QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8")); // QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); this->connect(ui->pushButton_BroadCast,SIGNAL(clicked()),this,SLOT(slotBroadcast())); this->connect(ui->pushButton_connt,SIGNAL(clicked()),this,SLOT(slotClientConnect())); this->connect(ui->tabWidget,SIGNAL(currentChanged(int)),this,SLOT(slotTabChange(int)));}UdpBroadcast::~UdpBroadcast(){ delete ui;}void UdpBroadcast::slotTabChange(int i){ if(i==0) { this->setWindowTitle(tr("服务端")); } else if(i==1) { this->setWindowTitle(tr("客户端")); }}void UdpBroadcast::slotBroadcast(){ m_Server_udp = new QUdpSocket(this); m_timer = new QTimer(this); this->connect(m_timer,SIGNAL(timeout()),this,SLOT(soltTiming())); m_timer->start(ui->spinBox_time->text().toInt()*1000); //定时器}void UdpBroadcast::soltTiming(){ QString qStrMesg = ui->lineEdit_Mesg->text(); qDebug()<<endl; qDebug()<<qStrMesg; if(qStrMesg == "") { return; } int length; //发送 if((length = m_Server_udp->writeDatagram(qStrMesg.toUtf8(),qStrMesg.toUtf8().length(),QHostAddress::Broadcast,55555))) { return; }}void UdpBroadcast::slotClientConnect(){ ui->textEdit_Mesg->clear(); m_Client_udp = new QUdpSocket(this); m_Client_udp->bind(55555); this->connect(m_Client_udp,SIGNAL(readyRead()),this,SLOT(slotClientReadMesg())); }void UdpBroadcast::slotClientReadMesg(){ while(m_Client_udp->hasPendingDatagrams()) //是否有数据报过来 { QByteArray qdata; qdata.resize(m_Client_udp->pendingDatagramSize()); //数据报大小 m_Client_udp->readDatagram(qdata.data(),qdata.size()); //读取 QString ss; ss = QString::fromUtf8(qdata); //中文 ui->textEdit_Mesg->append(ss); } }
- Qt之QUdpSocket定时器网络广播
- [QT]QT教程之实例分析[九] 网络广播程序(QUdpSocket)
- QT QUdpSocket广播
- Qt QUdpSocket类无法广播
- QT之Qudpsocket类的学习笔记
- qt学习之QUdpSocket的使用
- Qt之UDP的网络广播例子
- 5.关于QT中的网络编程,QTcpSocket,QUdpSocket
- 简单的通信(QUdpSocket、 QTcpSocket、QWebSocket)-----Qt网络
- Qt(3)QUdpsocket
- QT QUdpSocket类
- QUdpSocket进行网络传输
- Qt学习 之 定时器
- QT Creatrt 5.1.1 无法调用QUdpSocket
- Qt---基于UDP的网络广播程序
- Qt--基于UDP的网络广播
- qt之定时器 和随机数
- QT之鼠标、键盘、定时器
- 项目-团队-技术-个人(提拔篇)
- C语言_循环队列
- 项目-团队-技术-个人(专业篇)
- Kdump之kdump分析(续)
- 项目-团队-技术-个人 (团队建设篇)
- Qt之QUdpSocket定时器网络广播
- 生成随机数
- xml解析实例
- php中文 乱码
- Task和Activity相关
- 架构演进-实例篇
- 随机生成n个数
- tinyxml使用笔记与总结
- 对一名电子信息工程专业应届毕业生的建议