如何将Qt实现简单UDP通信改写为一个长尾词的?
- 内容介绍
- 相关推荐
本文共计1066个文字,预计阅读时间需要5分钟。
Qt实现UDP通信的简单代码示例,供参考:
UDP通信、Qt、UDP简介 (1)UDP(User Datagram Protocol,用户数据报协议)是一种轻量级、不可靠、面向无连接的传输层协议。UDP适用于对实时性要求高、对数据可靠性要求不高的场景。
以下是一个简单的Qt UDP通信示例:
1. 创建UDP发送器:
QUdpSocket *sender=new QUdpSocket(this);sender->bind(QHostAddress::LocalHost, 12345);
2. 发送数据:
QByteArray data=Hello, UDP!;sender->writeDatagram(data, QHostAddress::LocalHost, 12345);
3. 创建UDP接收器:
QUdpSocket *receiver=new QUdpSocket(this);receiver->bind(QHostAddress::LocalHost, 12345);
4. 接收数据:
QByteArray data;QHostAddress senderAddress;quint16 senderPort;if(receiver->waitForDatagramReady()){ data=receiver->readDatagram(1024, &senderAddress, &senderPort); qDebug() << Received: < 5. 关闭UDP连接: sender->close();receiver->close(); 注意:在实际应用中,需要根据具体需求进行相应的错误处理和资源管理。 Qt简单实现UDP通信的具体代码,供大家参考,具体内容如下 标签(空格分隔): udp通信、Qt 1)UDP(User Datagram Protocol,用户数据报协议) UDP是一个轻量级、不可靠、面向数据报的、无连接的传输层协议,多用于可靠性要求不严格,不是非常重要的传输,如直播、视频会议等等。 2)Qt中QUdpSocket类继承自QAbstractSocket,用来发送和接收UDP数据报,”Socket”即套接字,套接字即IP地址+端口号。其中IP地址指定了网络中的一台主机,二端口号则指定了该主机上的一个应用程序,端口号只具有本地意义,使用套接字即可实现网络上的两个应用程序之间的通信。 3)QUdpSocket支持IPv4广播,要广播数据报,则只需发送到一个特殊的地址QHostAddress::Broadcast(即255.255.255.255),数据报一般建议发送字节数小于512字节。端口号选择1024-65535(1024以下的常用作保留端口号,如FTP常用端口号21,Telnet常用端口号23,DNS域名服务器常用端口53等)。 发送端: #ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QUdpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked(); //按钮点击信号
private:
Ui::Widget *ui;
QUdpSocket* m_sender; //udp发送端
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
m_sender=new QUdpSocket(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
QByteArray dataGram=ui->lineEdit->text().toUtf8();
m_sender->writeDatagram(dataGram.data(),
dataGram.size(),
QHostAddress::Broadcast, //udp广播地址
6666);
}
接受端: #ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QUdpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void processData();
private:
Ui::Widget *ui;
QUdpSocket* m_receiver; //udp接受端
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
m_receiver=new QUdpSocket(this);
//绑定发送端,ShareAddress允许多接收端绑定6666端口
m_receiver->bind(6666,QUdpSocket::ShareAddress);
//当接收端接收到数据时,就会发送readRead信号
connect(m_receiver,&QUdpSocket::readyRead,this,&Widget::processData);
}
Widget::~Widget()
{
delete ui;
}
void Widget::processData()
{
QString strData;
//有未处理的数据报
while(m_receiver->hasPendingDatagrams()){
QByteArray dataGram;
//读取的数据报大小
dataGram.resize(m_receiver->pendingDatagramSize());
m_receiver->readDatagram(dataGram.data(),dataGram.size());
ui->dataLabel->setText(dataGram); //将接收到的数据显示到标签上
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。一、UDP简介
二、具体Demo
三、运行效果
本文共计1066个文字,预计阅读时间需要5分钟。
Qt实现UDP通信的简单代码示例,供参考:
UDP通信、Qt、UDP简介 (1)UDP(User Datagram Protocol,用户数据报协议)是一种轻量级、不可靠、面向无连接的传输层协议。UDP适用于对实时性要求高、对数据可靠性要求不高的场景。
以下是一个简单的Qt UDP通信示例:
1. 创建UDP发送器:
QUdpSocket *sender=new QUdpSocket(this);sender->bind(QHostAddress::LocalHost, 12345);
2. 发送数据:
QByteArray data=Hello, UDP!;sender->writeDatagram(data, QHostAddress::LocalHost, 12345);
3. 创建UDP接收器:
QUdpSocket *receiver=new QUdpSocket(this);receiver->bind(QHostAddress::LocalHost, 12345);
4. 接收数据:
QByteArray data;QHostAddress senderAddress;quint16 senderPort;if(receiver->waitForDatagramReady()){ data=receiver->readDatagram(1024, &senderAddress, &senderPort); qDebug() << Received: < 5. 关闭UDP连接: sender->close();receiver->close(); 注意:在实际应用中,需要根据具体需求进行相应的错误处理和资源管理。 Qt简单实现UDP通信的具体代码,供大家参考,具体内容如下 标签(空格分隔): udp通信、Qt 1)UDP(User Datagram Protocol,用户数据报协议) UDP是一个轻量级、不可靠、面向数据报的、无连接的传输层协议,多用于可靠性要求不严格,不是非常重要的传输,如直播、视频会议等等。 2)Qt中QUdpSocket类继承自QAbstractSocket,用来发送和接收UDP数据报,”Socket”即套接字,套接字即IP地址+端口号。其中IP地址指定了网络中的一台主机,二端口号则指定了该主机上的一个应用程序,端口号只具有本地意义,使用套接字即可实现网络上的两个应用程序之间的通信。 3)QUdpSocket支持IPv4广播,要广播数据报,则只需发送到一个特殊的地址QHostAddress::Broadcast(即255.255.255.255),数据报一般建议发送字节数小于512字节。端口号选择1024-65535(1024以下的常用作保留端口号,如FTP常用端口号21,Telnet常用端口号23,DNS域名服务器常用端口53等)。 发送端: #ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QUdpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked(); //按钮点击信号
private:
Ui::Widget *ui;
QUdpSocket* m_sender; //udp发送端
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
m_sender=new QUdpSocket(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
QByteArray dataGram=ui->lineEdit->text().toUtf8();
m_sender->writeDatagram(dataGram.data(),
dataGram.size(),
QHostAddress::Broadcast, //udp广播地址
6666);
}
接受端: #ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QUdpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void processData();
private:
Ui::Widget *ui;
QUdpSocket* m_receiver; //udp接受端
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
m_receiver=new QUdpSocket(this);
//绑定发送端,ShareAddress允许多接收端绑定6666端口
m_receiver->bind(6666,QUdpSocket::ShareAddress);
//当接收端接收到数据时,就会发送readRead信号
connect(m_receiver,&QUdpSocket::readyRead,this,&Widget::processData);
}
Widget::~Widget()
{
delete ui;
}
void Widget::processData()
{
QString strData;
//有未处理的数据报
while(m_receiver->hasPendingDatagrams()){
QByteArray dataGram;
//读取的数据报大小
dataGram.resize(m_receiver->pendingDatagramSize());
m_receiver->readDatagram(dataGram.data(),dataGram.size());
ui->dataLabel->setText(dataGram); //将接收到的数据显示到标签上
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。一、UDP简介
二、具体Demo
三、运行效果

