qt 实现UDP通信简单案例
生活随笔
收集整理的這篇文章主要介紹了
qt 实现UDP通信简单案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現效果
實現功能
創建兩個界面,可以通過udp進行通信,并顯示通信內容。
界面部分由代碼實現,并使用qss簡單美化。
udp通信由創建套接字,綁定端口號,發送和接收數據函數完成。
代碼實現
創建第一個通信對象
ud1.h
ud1.cpp
#include "udp1.h" #include <QByteArray> #include <QDebug> #include <QHostAddress>udpUser::udpUser(QWidget *parent): QMainWindow(parent) {layOut();udpSocket = new QUdpSocket(this);udpSocket->bind(QHostAddress::LocalHost, myLine[0]->text().toInt());connect(sendButton, &QPushButton::clicked,[=](){if(textEdit->toPlainText() != ""){qint64 size = textEdit->toPlainText().size();QByteArray msg = textEdit->toPlainText().toUtf8();udpSocket->writeDatagram(msg.data(), size, QHostAddress(myLine[2]->text()), myLine[1]->text().toInt());recordText->append("我說:" + textEdit->toPlainText());textEdit->clear();}});//槽函數處理按鍵發送和接收處理//接收數據connect(udpSocket, &QUdpSocket::readyRead,[=](){QByteArray msg;while(udpSocket->hasPendingDatagrams()){msg.resize(udpSocket->pendingDatagramSize());udpSocket->readDatagram(msg.data(), msg.size());recordText->append("她說:" + msg);}});}udpUser::~udpUser() {delete udpSocket; }void udpUser::layOut() {QWidget *window = new QWidget;window->setObjectName("ud2Widget");this->setGeometry(900, 100, 480, 800);labelName << "myPort" << "toPort" << "toIp" ;labelNum << "9999" << "8888" << "127.0.0.1";vLayOut = new QVBoxLayout();gridLayout = new QGridLayout();for(int i=0; i<3; i++){myLabel[i] = new QLabel();myLabel[i]->setText(labelName[i]);myLine[i] = new QLineEdit();myLine[i]->setText(labelNum[i]);gridLayout->addWidget(myLabel[i], i, 0);gridLayout->addWidget(myLine[i], i, 1);myLabel[i]->setObjectName("ud2Label" + QString::number(i));}myLabel[3] = new QLabel("聊天記錄");myLabel[3]->setObjectName("ud2Record");myLabel[4] = new QLabel("輸入內容");myLabel[4]->setObjectName("ud2Input");recordText = new QTextEdit();textEdit = new QTextEdit();sendButton = new QPushButton();sendButton->setText("發送");sendButton->setObjectName("ud2Send");recordText->setReadOnly(true);textEdit->setMaximumHeight(200);vLayOut->addLayout(gridLayout);vLayOut->addWidget(myLabel[3]);vLayOut->addWidget(recordText);vLayOut->addWidget(myLabel[4]);vLayOut->addWidget(textEdit);vLayOut->addWidget(sendButton, 0, Qt::AlignRight);window->setLayout(vLayOut);this->setCentralWidget(window); }ud2代碼實現同ud1
main.cpp
#include "mainwindow.h" #include "udp2.h" #include <QFile> #include <QDebug>#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);QFile file(":/style.qss");if(file.exists()){qDebug() << "qss file exits" << endl;file.open(QFile::ReadOnly);QString styleSheet = QLatin1String(file.readAll());qApp->setStyleSheet(styleSheet);file.close();}MainWindow w;udpUser user2;user2.show();w.show();return a.exec();總結
代碼中涉及的變量轉換參考文章:
總結
以上是生活随笔為你收集整理的qt 实现UDP通信简单案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【定量分析、量化金融与统计学】统计推断基
- 下一篇: 全球与中国工业操作杆开关市场现状及未来发