和TCP相比,UDP主要以速度快而被大多数用户选择,今天简单学习在QT中通过UDP协议进行通信
常用类
QT中用于UDP通信的主要是QUdpSocket
类
创建发送端
sender = new QUdpSocket(this);
//设置编码格式避免中文乱码
QByteArray data = ui->lineEdit->text().toLocal8Bit();
//发送数据
sender->writeDatagram(data.data(),data.size(),QHostAddress::Broadcast,51255);
创建接收端
revicer = new QUdpSocket(this);
//初始化接收端socket,QUdpSocket::ShareAddress允许其他服务再次绑定该端口
revicer->bind(51255,QUdpSocket::ShareAddress);
//使用readyRead()信号连接数据处理方法
connect(revicer,SIGNAL(readyRead()),this,SLOT(ReceiveData()));
void MainWindow::ReceiveData()
{
//hasPendingDatagrams()判断是否有数据可读
while(revicer->hasPendingDatagrams())
{
QByteArray data;
//pendingDatagramSize()可以判断数据的长度
data.resize(revicer->pendingDatagramSize());
//readDatagram()读取数据
revicer->readDatagram(data.data(),data.size());
//解码并显示数据
ui->textEdit->setText(QString::fromLocal8Bit(data));
}
}