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定时器网络广播相关推荐

  1. Qt基于UDP的网络广播程序

    用户数据报协议(User Data Protocol,UDP)是一种简单轻量级.不可靠.面向数据报.无连接的传输层协议,可以应用在可靠性不是十分重要的场合,如短消息.广播信息等. 适合应用的情况有一下 ...

  2. Qt学习笔记之网络编程

    Qt网络模块提供了允许您编写TCP / IP客户端和服务器的类.它提供了代表低级网络概念的低级类(例如QTcpSocket,QTcpServer和QUdpSocket),以及高级类(例如QNetwor ...

  3. Qt学习笔记之网络和连接

    Qt提供用于高级和低级网络通信的类,用于Web集成的类以及用于进程间通信的类. 对于高级网络流量,Qt Network在使用的操作上提供了一个抽象层,仅显示高级类和功能.Qt Network还可以处理 ...

  4. Qt项目实战之网络电子白板-安晓辉-专题视频课程

    Qt项目实战之网络电子白板-10082人已学习 课程介绍         本课程使用Qt技术实现了网络电子白板,支持直线.矩形.椭圆.三角形.涂鸦等图形元素.本课程实现的电子白板,可以在多人之间共享, ...

  5. 动物园IP网络广播-基于IP局域网络的动物园背景音乐广播系统-动物园智能广播系统设计指南

    动物园IP网络广播-基于IP局域网络的动物园背景音乐广播系统-动物园智能广播系统设计指南 北京海特伟业科技有限公司发布于2022年8月31日 文/任洪卓 一.动物园IP网络广播项目背景及需求 某动物园 ...

  6. 校园IP网络广播方案

    一.校园IP网络广播系统简介  1.校园IP网络广播系统优越性 调频广播在调制解调中引入噪声,设备老化.频点偏移也会导致信号失真.基于音频和调频传输的可控制的智能广播,受传输方式的限制,也只能以分区. ...

  7. 微软MSDN中文网络广播(Webcast)——Visual Studio 2010 ALM应用实践系列课程预告(2011)...

    Visual Studio 2010 & ALM应用实践系列课程:(将在2011年3月前录制完成) 本系列课程较完整的覆盖了基于Visual Studio 2010 & ALM来进行软 ...

  8. 基于Qt\C++实现的网络远程控制系统

    基于Qt\C++实现的网络远程控制系统     本系统在Qt平台上采用C++语言实现的网络远程控制.通过将server部署到腾讯云服务器上,利用云中转的内网穿透方式实现不同内网之间的远程控制. 该系统 ...

  9. Qt中利用定时器QTimer实时显示当前日期和时间

    Qt中利用定时器QTimer实时显示当前日期和时间 时显示当前日期和时间.下面说明方法: 1. 在工程中声明一个全局QTimer对象 QTimer *timer; 2. 在构造函数中定义QTimer, ...

最新文章

  1. python -m参数
  2. binlog数据库不写入binlog_mysql 为什么不能仅仅用 binlog 保证不丢数据
  3. linux系统内存执行elf的多种方式
  4. Loaded runtime CuDNN library: 7102 (compatibility version 7100) but source was compiled with 7004
  5. 深入浅出学Hive:Hive体系结构
  6. Java 添加、更新和移除PDF超链接
  7. queue模块的使用
  8. 七年级认识计算机课件,认识计算机(七年级)ppt课件
  9. SPSS数据分析之描述性统计、区间估计与假设检验【操作详解】
  10. linux命令之tee,linux tee命令
  11. html页面字段怎么排版,如何做好html的排版标签
  12. 开发extjs常用的插件
  13. javascript紧接上一张for循环的问题,我自己的理解
  14. Qt Pro语法总结
  15. oracle数据库架构视频教程,Oracle数据库体系架构_oracle架构_oracle学习视频_oracle数据库_课课家...
  16. google浏览器被360导航劫持
  17. 华为热设计工程师待遇_【华为上海研究所工资】热设计工程师待遇-看准网
  18. 华为手机为什么打不开微信连接到服务器,华为手机微信打不开如何解决? 华为手机微信打不开解决方法介绍!...
  19. 常用计算机的储存设备有哪些,【好物榜单】常用数据存储设备推荐
  20. 让模态浮出水面的S2 刘易斯逻辑之八

热门文章

  1. sci四区和中文核心期刊哪个含金量更高
  2. python qt gui教程_Python GUI教程(四):安装并使用Qt设计师设计Python GUI
  3. java二次开发微信公众号授权
  4. 每日笔记重点!!!!
  5. 全局搜索软件Everything,安利一波呀
  6. DDR3读写实验坑——Tmac
  7. 用户登录如何给密码加密xxtea.js
  8. CSP-S/J 2019 (原NOIP)试题+答案
  9. kubernetes资源对象kind
  10. ps样式如何导入?Photoshop样式导入教程