服务端 进行bind
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_send_clicked();
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
QUdpSocket *udpSocket;
QHostAddress addr; // 全局变量
quint16 port; // 全局变量
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("server");
ui->spinBox->setMaximum(9999);
ui->spinBox->setValue(9999);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_send_clicked()
{
QByteArray arr = ui->lineEdit->text().toUtf8();
udpSocket->writeDatagram(arr, addr, port); // 向获取地址和端口,发消息
ui->textBrowser->insertPlainText("send:"+QString(arr)+"\n");
ui->lineEdit->clear();
}
void MainWindow::on_pushButton_clicked()
{
udpSocket = new QUdpSocket(this);
connect(udpSocket,&QUdpSocket::readyRead,this,[&](){
QByteArray arr;
arr.resize(udpSocket->bytesAvailable());
udpSocket->readDatagram(arr.data(),arr.size(),&addr,&port); // 获取发送的地址与端口
ui->textBrowser->insertPlainText(addr.toString()+":"+QString(arr)+"\n");
});
udpSocket->bind(QHostAddress::Any, 9999);
ui->pushButton->setEnabled(false);
}
客户端 没有bind
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_send_clicked();
private:
Ui::MainWindow *ui;
QUdpSocket *udpSocket;
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("client");
ui->spinBox->setMaximum(9999);
ui->spinBox->setValue(9999);
udpSocket = new QUdpSocket(this);
connect(udpSocket,&QUdpSocket::readyRead,this,[&](){
QHostAddress addr;
quint16 port;
QByteArray arr;
arr.resize(udpSocket->bytesAvailable());
udpSocket->readDatagram(arr.data(),arr.size(),&addr,&port);
ui->textBrowser->insertPlainText(addr.toString()+":"+QString(arr)+"\n");
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_send_clicked()
{
QByteArray arr = ui->lineEdit->text().toUtf8();
udpSocket->writeDatagram(arr, QHostAddress::LocalHost, 9999);
ui->textBrowser->insertPlainText("send:"+QString(arr)+"\n");
ui->lineEdit->clear();
}