欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸

 更新時(shí)間:2022年08月18日 17:09:33   作者:直到流螢成飛火  
這篇文章主要為大家詳細(xì)介紹了QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了QT UDP實(shí)現(xiàn)簡(jiǎn)單消息傳輸?shù)木唧w代碼,供大家參考,具體內(nèi)容如下

這幾天看了下Qt的udp,順便實(shí)現(xiàn)了下簡(jiǎn)單的消息傳輸,看起來比較簡(jiǎn)單。

UDP服務(wù)器:

截圖如下:

代碼:

server.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QUdpSocket>
#include<QtNetwork>
#include<QLabel>
#include<QPushButton>
#include<QLineEdit>
#include<QGridLayout>
#include<QTimer>

class Widget : public QWidget
{
? ? Q_OBJECT

public:
? ? Widget(QWidget *parent = 0);
? ? ~Widget();
protected:
? ? QTimer* timer;
? ? QImage* image;
private slots:
? ? void send();
? ? void bordcaststart();
private:
? ? QPushButton* start_ptn;
? ? QPushButton* close_ptn;
? ? QPushButton* send_ptn;
? ? QLabel* label;
? ? QLineEdit* edit;
? ? QLabel* image_label;
? ? QGridLayout* layout;
? ? QUdpSocket* udpsocket;
};

#endif // WIDGET_H

server.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
? ? : QWidget(parent)
{
? ? start_ptn=new QPushButton("start");
? ? close_ptn=new QPushButton("quit");
? ? send_ptn=new QPushButton("send");
? ? label=new QLabel;
? ? label->setText("this is test!");
? ? edit=new QLineEdit;
? ? layout=new QGridLayout(this);
? ? layout->addWidget(label);
? ? layout->addWidget(edit);
? ? layout->addWidget(send_ptn,1,1);
? ? layout->addWidget(start_ptn,2,0);
? ? layout->addWidget(close_ptn,2,1);
? ? this->resize(400,400);

? ? timer=new QTimer(this);
? ? udpsocket=new QUdpSocket(this);
? ? connect(start_ptn,SIGNAL(clicked(bool)),this,SLOT(bordcaststart()));
? ? connect(close_ptn,SIGNAL(clicked(bool)),this,SLOT(close()));
// ? ?connect(timer,SIGNAL(timeout()),this,SLOT(send()));
}

Widget::~Widget()
{

}

void Widget::send()
{

? ? QByteArray datagram= "Broadcast message " +edit->text().toUtf8();
? ? udpsocket->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454);
}

void Widget::bordcaststart()
{
? ?// timer->start(1000);
? ? start_ptn->setDisabled(true);
? ? connect(send_ptn,SIGNAL(clicked(bool)),this,SLOT(send()));
}

客戶端

截圖:

client.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QUdpSocket>
#include<QtNetwork>
#include<QLabel>
#include<QTimer>
#include<QPushButton>
#include<QGridLayout>

class Widget : public QWidget
{
? ? Q_OBJECT

public:
? ? Widget(QWidget *parent = 0);
? ? ~Widget();
protected:

private:
? ? QGridLayout* layout;
? ? QPushButton* quit_ptn;
? ? QLabel* label;
? ? QUdpSocket* udpsocket;
private slots:
? ? void boarcast();
};

#endif // WIDGET_H

client.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
? ? : QWidget(parent)
{
? ? label=new QLabel;
? ? quit_ptn=new QPushButton("quit");

? ? layout=new QGridLayout(this);
? ? layout->addWidget(label);
? ? layout->addWidget(quit_ptn);
? ? this->resize(200,200);

? ? udpsocket=new QUdpSocket(this);
? ? udpsocket->bind(45454, QUdpSocket::ShareAddress);
? ? connect(udpsocket,SIGNAL(readyRead()),this,SLOT(boarcast()));
? ? connect(quit_ptn,SIGNAL(clicked(bool)),this,SLOT(close()));
}

Widget::~Widget()
{

}

void Widget::boarcast()
{
? ? while (udpsocket->hasPendingDatagrams()) {
? ? ? ? ? ? QByteArray datagram;
? ? ? ? ? ? datagram.resize(udpsocket->pendingDatagramSize());
? ? ? ? ? ? QHostAddress sender;
? ? ? ? ? ? quint16 senderPort;

? ? ? ? ? ? udpsocket->readDatagram(datagram.data(), datagram.size(),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &sender, &senderPort);

? ? ? ? ? ? label->setText(datagram);
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論