4.1 UdpSocket .pro network
4.2 new 出套接字
4.3 绑定端口
4.4 书写报文 writeDatagram
4.5 ReadyRead监听信号
4.6 读取报文
4.7 报文长度 qint16 size = udp->pendingDatagramSize();
4.8 同步聊天记录
主函数中创建udp1和udp2的窗口并运行。 upd1和udp2除了端口号反转其他一样。
main.cpp
#include "udp1.h"
#include "udp2.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Udp1 w;
w.show();
udp2 w2;
w2.show();
return a.exec();
}
udp1.cpp
#include "udp1.h"
#include "ui_udp1.h"
Udp1::Udp1(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Udp1)
{
ui->setupUi(this);
ui->myport->setText("8888");
ui->toport->setText("9999");
ui->toip->setText("127.0.0.1");
//创建套接字
udp = new QUdpSocket(this);
//绑定自身端口号
udp->bind(ui->myport->text().toInt());
//点击发送按钮,发送报文
connect(ui->sendbtn,&QPushButton::clicked,[=](){
//书写内容 参数1 内容 2 对方 ip 3 对方端口
udp->writeDatagram(ui->input->toPlainText().toUtf8(),QHostAddress(ui->toip->text()),ui->toport->text().toInt());
ui->record->append("my say : "+ui->input->toPlainText());
//清空输入框
ui->input->clear();
});
//接收数据
connect(udp,&QUdpSocket::readyRead,[=](){
//获取报文长度
qint16 size = udp->pendingDatagramSize();
QByteArray array = QByteArray(10000,0);
//读取报文
udp->readDatagram(array.data(),size);
//将数据同步到连天记录
ui->record->append(array);
});
}
Udp1::~Udp1()
{
delete ui;
}
udp2.cpp
#include "udp2.h"
#include "ui_udp2.h"
udp2::udp2(QWidget *parent)
: QWidget(parent)
, ui(new Ui::udp2)
{
ui->setupUi(this);
ui->myport->setText("9999");
ui->toport->setText("8888");
ui->toip->setText("127.0.0.1");
//创建套接字
udp = new QUdpSocket(this);
//绑定自身端口号
udp->bind(ui->myport->text().toInt());
//点击发送按钮,发送报文
connect(ui->sendbtn,&QPushButton::clicked,[=](){
//书写内容 参数1 内容 2 对方 ip 3 对方端口
udp->writeDatagram(ui->input->toPlainText().toUtf8(),QHostAddress(ui->toip->text()),ui->toport->text().toInt());
ui->record->append("my say : "+ui->input->toPlainText());
//清空输入框
ui->input->clear();
});
//接收数据
connect(udp,&QUdpSocket::readyRead,[=](){
//获取报文长度
qint16 size = udp->pendingDatagramSize();
QByteArray array = QByteArray(10000,0);
//读取报文
udp->readDatagram(array.data(),size);
//将数据同步到连天记录
ui->record->append(array);
});
}
udp2::~udp2()
{
delete ui;
}