今日は元旦ですが、私はあなたのすべてのハッピーニューイヤーを望みます!
ディレクトリ
レンダリング
そして、トランシーバと併せて、上端サービス
マニュアルの読み
バインドバインド:
UDPネストされたキーワードについて、UDPデータテーブルは、指定されたアドレスまたは指定ポートに達するたびに、結合した後、readRead()信号が送信されます!
読んで読んで():
新しいデータが現在のリードチャネルデバイスから読み込まれるたびに、この信号が発行されます。新しいペイロードネットワークデータは、ネットワークソケットに到着したとき、またはデータの新しいブロックがデバイスに取り付けられたときにときに、新しいデータは、例えば、再び利用可能である場合にのみ送信されます。
この信号は、(どのような信号が再帰??を送信することができる)再帰送信することができません
(注)は、イベントループやコールwaitForReadyReadを(再入力した場合)readyRead()信号に接続され、タンク内(waitForReadyRead()はまだtrueを返すかもしれないが)、信号が再発行されません。
あなたは)readyRead()信号に接続され、タンク内のイベントループをか(waitForReadyReadを呼び出して再入力した場合(waitForReadyRead()がまだtrueを返すかもしれないが)、信号が再発行されません。
ルーチン
udpclient.h
#ifndef UDPCLIENT_H
#define UDPCLIENT_H
#include <QDialog>
#include <QVBoxLayout>
#include <QTextEdit>
#include <QPushButton>
#include <QUdpSocket>
#include <QMessageBox>
#include <QHostAddress>
class UDPClient : public QDialog
{
Q_OBJECT
public:
UDPClient(QWidget *parent = nullptr);
~UDPClient();
public slots:
void CloseBtnClicked();
void dataRecieved();
private:
//布局控件
QTextEdit *ReciveTextEdit;
QPushButton *CloseBtn;
QVBoxLayout *mainLayout;
//网络控件
int port;
QUdpSocket *udpSocket;
};
#endif // UDPCLIENT_H
udpclient.cpp
#include "udpclient.h"
UDPClient::UDPClient(QWidget *parent)
: QDialog(parent)
{
setWindowIcon(QIcon("icon.png"));
setWindowTitle(QStringLiteral("UDP客户端"));
//布局设计
ReciveTextEdit = new QTextEdit(this);
CloseBtn = new QPushButton(this);
CloseBtn->setText(QStringLiteral("关闭"));
mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(ReciveTextEdit);
mainLayout->addWidget(CloseBtn);
//关闭事件关联
connect(CloseBtn,SIGNAL(clicked()),this,SLOT(CloseBtnClicked()));
//网络参数设定,UDP端口参数设定
quint16 port = 5555;
udpSocket = new QUdpSocket(this);
//数据事件关联
connect(udpSocket,SIGNAL(readRead()),this,SLOT(dataRecived()));
bool result = udpSocket->bind(port);//绑定到指定的端口上
if(!result){//如果错误返回
QMessageBox::information(this,QStringLiteral("错误!"),QStringLiteral("UDP出现了错误!"));
return;
}
}
UDPClient::~UDPClient()
{
}
//关闭按键事件
void UDPClient::CloseBtnClicked(){
close();
}
void UDPClient::dataRecieved(){
while (udpSocket->hasPendingDatagrams()) {//判断数据报表是否有效
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(datagram.data(),datagram.size());
QString msg = datagram.data();
ReciveTextEdit->insertPlainText(msg);//写入返回的数据
}
}