QT模块学习——UDP通讯
UDP通讯 就像是送信,只要有地址就可以传输,速度快,而且比较简单
ui设计界面:
代码:
#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("服务器端口:8888");
//分配空间,指定父对象
udpsocket = new QUdpSocket(this);
//绑定
udpsocket->bind(8888);
//当对方成功发送数据过来,自动触发readyRead();信号
connect(udpsocket,&QUdpSocket::readyRead,this,&Widget::dealMsg);
}
Widget::~Widget()
{
delete ui;
}
void Widget::dealMsg(){
char buf[1024]={
0};
QHostAddress cliaddr;//对方地址
quint16 port;//对方端口
qint64 len = udpsocket->readDatagram(buf,sizeof(buf),&cliaddr,&port);
if(len>0){
//格式化,
QString str = QString("{%1:%2} %3").arg(cliaddr.toString())
.arg(port).arg(buf);
//给编辑区设置内容
ui->recv->setText(str);
}
}
void Widget::on_send_clicked()
{
//获取ip和端口
QString ip = ui->ip->text();
qint16 port = ui->port->text().toInt();
//获取编辑区内容
QString str = ui->send_2->toPlainText();
//给指定IP发送消息
udpsocket->writeDatagram(str.toUtf8(),QHostAddress(ip),port);
}