qt通过UDP来进行通信

通过udp来进行通信,设置客户端和服务器来进行通信,利用qt的接口来实现qq聊天的类似功能,以下就直接晒出源码了:

实现结果如图所示:

服务器端的代码:

在.h文件中:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QUdpSocket>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void processPengingDatagram();


private slots:
    void on_pushButton_clicked();

    void on_ClearBtn_clicked();

private:
    Ui::MainWindow *ui;
    QUdpSocket * udpSocket;
};

#endif // MAINWINDOW_H

在.cpp文件中:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    udpSocket = NULL;
    udpSocket = new QUdpSocket(this);
    udpSocket->bind(QHostAddress::AnyIPv4,2222,QUdpSocket::ShareAddress);
    connect(udpSocket, &QUdpSocket::readyRead, this, &MainWindow::processPengingDatagram);
}

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

void MainWindow::processPengingDatagram()
{
     qDebug()<<"22222";
     while (udpSocket->hasPendingDatagrams())
     {
          QByteArray datagram;
          datagram.resize(udpSocket->pendingDatagramSize());
          udpSocket->readDatagram(datagram.data(), datagram.size());
          QString str;
          str+=datagram+"\n";
          ui->ReceiveEdit->append(str);
     }
}

void MainWindow::on_pushButton_clicked()
{
    QByteArray datagram = ui->WriteEdit->toPlainText().toLatin1();
    quint16 Port = ui->portEdit->text().toInt();
    QString IP = ui->ipEdit->text();
    udpSocket->writeDatagram(datagram.data(), datagram.size(),
     QHostAddress::Broadcast, Port);
}

void MainWindow::on_ClearBtn_clicked()
{
    ui->ReceiveEdit->clear();
}

在main函数中,如下:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

界面端,布局如下:

需要源码的可以参考: https://download.csdn.net/download/Littlehero_121/12074982

发布了163 篇原创文章 · 获赞 42 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Littlehero_121/article/details/103810051