QT网络编程UDP下C/S架构广播通信的示例分析
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,今天就跟大家聊聊有关QT网络编程UDP下C/S架构广播通信的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。QT有封装好的UDP协议的类
千家信息网最后更新 2025年11月18日QT网络编程UDP下C/S架构广播通信的示例分析
今天就跟大家聊聊有关QT网络编程UDP下C/S架构广播通信的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
QT有封装好的UDP协议的类,QUdpSocket,里面有我们想要的函数接口。感兴趣的话,可以看看。
先搞服务端吧,写一个子类,继承QDialog类,起名为UdpServer类。头文件要引用我们上边说的QUdpSocket这个类,还有我们想要的布局的类。
#ifndef UDPSERVER_H#define UDPSERVER_H#include#include #include #include #include #include #include #include class UdpServer : public QDialog{ Q_OBJECTpublic: UdpServer(QWidget *parent = 0,Qt::WindowFlags f= 0); ~UdpServer();private: QLabel * TimerLabel; QLineEdit * TextLineEdit; QPushButton* StartBtn; QVBoxLayout * mainLayout; public slots: void StartBtnClicked(); void timeout(); private: int port; bool isStarted; QUdpSocket * udpSocket; QTimer *timer;};#endif // UDPSERVER_H
在.cpp文件里,我们先是把界面显示出来,然后用udp的writedategram把想要传的写进去。
#include "udpserver.h"UdpServer::UdpServer(QWidget *parent,Qt::WindowFlags f) : QDialog(parent,f){ setWindowTitle(tr("UDP SERVER")); TimerLabel = new QLabel(tr("show time:"),this); TextLineEdit = new QLineEdit(this); StartBtn = new QPushButton(tr("start"),this); mainLayout = new QVBoxLayout(this); mainLayout-> addWidget(TimerLabel); mainLayout-> addWidget(TextLineEdit); mainLayout-> addWidget(StartBtn); connect(StartBtn,SIGNAL(clicked()),this,SLOT(StartBtnClicked())); port = 5555; isStarted = false; udpSocket = new QUdpSocket(this); timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));}UdpServer::~UdpServer(){}void UdpServer::StartBtnClicked(){ if(!isStarted) { StartBtn->setText(tr("STOP")); timer->start(1000); isStarted = true; } else { StartBtn->setText(tr("BEGIN")); isStarted = false; timer->stop(); }}void UdpServer::timeout(){ QString msg = TextLineEdit->text(); int length=0; if(msg=="") { return; } if((length=udpSocket->writeDatagram(msg.toLatin1(),msg.length(),QHostAddress::Broadcast,port))!=msg.length()) { qDebug() << msg.toLatin1(); return; }}我这里用qDebug把要传的东西打印出来,进行测试,看看是否传过去了。
客户端:
#ifndef UDPCLIENT_H#define UDPCLIENT_H#include#include #include #include #include class UdpClient : public QDialog{ Q_OBJECT public: UdpClient(QWidget *parent = 0); ~UdpClient(); private: QTextEdit* ReceiceTextEdit; QPushButton* CloseBtn; QVBoxLayout* mainLayout; public slots: void CloseBtnClicked(); void dataReceived(); private: int port; QUdpSocket* udpSocket;};#endif // UDPCLIENT_H
客户端很简单,怎么实现布局,我就不多说了,主要是dataReceive函数。
#include "udpclient.h"#include#include UdpClient::UdpClient(QWidget *parent) :QDialog(parent){ setWindowTitle("UDP CLIENT"); ReceiceTextEdit = new QTextEdit(this); CloseBtn = new QPushButton(tr("Close"),this); mainLayout = new QVBoxLayout(this); mainLayout->addWidget(ReceiceTextEdit); mainLayout->addWidget(CloseBtn); connect(CloseBtn,SIGNAL(clicked()),this,SLOT(CloseBtnClicked())); port =5555; udpSocket = new QUdpSocket(this); bool result = udpSocket->bind(port); if(!result) { QMessageBox::information(this,tr("ERROR"),tr("connect error")); return; } connect(udpSocket,SIGNAL(readyRead()),this,SLOT(dataReceived()));} UdpClient:: ~UdpClient(){}void UdpClient::CloseBtnClicked(){ close();}void UdpClient::dataReceived(){ while(udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(datagram.data(),datagram.size()); QString msg=datagram.data(); ReceiceTextEdit->insertPlainText(msg); }}
最后显示一下界面,服务端发送hello。

客户端收到的:
不停的在打印hello。直到点击关闭,或者服务端停止。
看完上述内容,你们对QT网络编程UDP下C/S架构广播通信的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容
客户
客户端
服务
架构
示例
网络
网络编程
分析
广播
编程
通信
函数
布局
文件
界面
上边
东西
兴趣
子类
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
制作动态壁纸手机软件开发
徐州定制软件开发价格
并发的更新数据库
网络安全视频网站怎么删除
小学生网络安全手抄报精选
天津网络安全学院
软件开发毕业后能干嘛
node 数据库事务
词典数据库下载
网络安全倡导文章
宽城区网络技术服务诚信经营
网络安全月宣传ppt
芜湖天气预报软件开发
济南杨奕软件开发公司
金鸽数据库
ftp服务器软件安卓
派出所签订网络安全责任书
安邦保险成都软件开发
网络安全工程师淘汰率高吗
sql数据库技术介绍
数据库版本不对应
莱芜威海软件开发
网络安全活动周宣传标语
数据库课程设计游标
服务器传输介质
游戏王手机开数据库制卡
数据库开发好还是软件开发好
椒江区网络安全检查工作方案
网页制作用什么数据库
linux上金仓数据库如何连接