qt編程:windows下的udp通信
本文博客鏈接:
http://blog.csdn.net/jdh99
,作者:jdh,轉載請注明.
環境:
主機:win7
開發環境:qt
功能:
用udp進行收發通信
界面:
源代碼:
LssHost.pro:
#------------------------------------------------- # # Project created by QtCreator 2013-09-22T09:36:44 # #------------------------------------------------- QT += core gui QT += network TARGET = LssHost TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui
mainwindows.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QtNetwork/QUdpSocket> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QUdpSocket *udp_socket_tx; QUdpSocket *udp_socket_rx; QHostAddress Ip_Tx; int Port_Tx; private slots: void on_btn_cfg_clicked(); void on_btn_tx_clicked(); void rx_udp(); }; #endif // MAINWINDOW_H
mainwindows.cpp:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); udp_socket_tx = new QUdpSocket(this); udp_socket_rx = new QUdpSocket(this); ui->btn_tx->setEnabled(false); } MainWindow::~MainWindow() { delete ui; } //接收udp數據 void MainWindow::rx_udp() { qDebug() << "rx"; while (udp_socket_rx->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udp_socket_rx->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; udp_socket_rx->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); ui->txt_rx->append(datagram); } } //發送按鍵 void MainWindow::on_btn_tx_clicked() { QByteArray datagram = ui->txt_tx->toPlainText().toAscii(); udp_socket_tx->writeDatagram(datagram, datagram.size(), Ip_Tx, Port_Tx); } //配置按鍵 void MainWindow::on_btn_cfg_clicked() { bool ok; int port_rx = 0; //獲得發送IP和端口 Ip_Tx = QHostAddress(ui->txt_ip->text()); Port_Tx = ui->txt_port_tx->text().toInt(&ok); //獲得接收端口 port_rx = ui->txt_port_rx->text().toInt(&ok); udp_socket_rx->bind(QHostAddress::Any, port_rx); //綁定接收信號槽 connect(udp_socket_rx, SIGNAL(readyRead()),this, SLOT(rx_udp())); ui->btn_tx->setEnabled(true); }
main.cpp:
#include <QtGui/QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
