QT udp测试

本文介绍了如何在QT中使用QUdpSocket和QTimer进行UDP通信,展示了在一个工程中创建服务器和客户端,并处理数据发送和接收的基本过程,以及解决中文乱码问题的方法。
摘要由CSDN通过智能技术生成

QT udp测试

本次测试将服务器和客户端写在了一个工程下,代码如下
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QUdpSocket>
#include<QTimer>

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();

    void dataReceived();

    void on_pushButton_2_clicked();
    void timeoutslot();

private:
    Ui::Widget *ui;

public:
    int m_iport;
    bool m_bisstarted;
    QUdpSocket *udpSocket_server;
     QUdpSocket *udpSocket_client;
    QTimer *timer;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    m_iport = 5555;
    udpSocket_server = new QUdpSocket(this);
    udpSocket_client = new QUdpSocket(this);
    udpSocket_client->bind(m_iport);
    timer = new QTimer(this);
    connect(timer , SIGNAL(timeout()) , this , SLOT(timeoutslot()));
    connect(udpSocket_client , SIGNAL(readyRead()) , this , SLOT(dataReceived()));
    this->setWindowTitle("updtest");

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    timer->start(500);
}

void Widget::timeoutslot()
{
    QString msg = ui->lineEdit_send->text();
    if(msg.size()==0)
    {
        return;
    }
    //转成utf8 避免中文乱码
    udpSocket_server->writeDatagram(msg.toUtf8 ().data(), msg.toUtf8().size() , QHostAddress::Broadcast , m_iport);

}


void Widget::on_pushButton_2_clicked()
{
    close();
}


void Widget::dataReceived()
{
    while(udpSocket_client->hasPendingDatagrams())
    {
        QByteArray datagram;
        datagram.resize(udpSocket_client->pendingDatagramSize());
        udpSocket_client->readDatagram(datagram.data() , datagram.size());
        QString msg = datagram.data();
        ui->textEdit->insertPlainText(msg);

    }
}


运行结果如下:
在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一种跨平台的应用程序开发框架,可以用来开发桌面应用、移动应用和嵌入式应用等,同时也包含了Qt网络模块,其中包括了UDP套接字的实现。UDP是无连接的协议,不保证数据的可靠性和顺序性,但是具有传输速度快的优点,适用于实时应用程序。因此,通过Qt实现UDP服务器可以快速地开发和部署各种实时应用,如在线聊天、游戏、实时监控等。 同时,为了更好地协同开发和管理代码,一些程序员往往将自己的代码托管到开源代码托管平台中,如GitHub、GitLab和Gitee等,使得代码可以被其他人使用和修改,并且可以跟踪各个版本的变化。而Gitee作为国内的开源代码托管平台,提供了Git版本控制、在线代码编辑、持续集成等功能,方便开源开发者在国内快速、安全地进行协同开发。 因此,Qt UDP服务器与Gitee的结合可以使得开发者在开发实时应用时使用Qt快速构建UDP服务器,再将其代码托管到Gitee,方便团队协同开发和管理代码。开发者可以利用Gitee提供的工具进行版本管理、代码合并、测试和CI/CD等操作,避免出现代码冲突和错误,同时也可以加入开源社区,学习其他人的经验,提升自己的技能。 总之,Qt UDP服务器与Gitee的结合体现了开源开发的思想,为开发者提供了快速构建实时应用和实现协同开发的工具和平台,有助于促进技术创新和开源社区的发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值