14、UDP通信
1、linux下UDP通信模型
2、qt下UDP通信模型
3、UDP模型就向写信,只要知道地址就可以发送,但是容易丢包
TCP通信就向打电话,需要确认对方身份;
4、UDP通信消息处理
1、端口监听、接收
QUdpSocket *udpsocket; // 定义通信套接字 udpsocket = NULL; udpsocket = new QUdpSocket(this); // 组播是需要搭配QHostAddress::AnyIPv4 使用 udpsocket->bind(QHostAddress::AnyIPv4,8888); // 绑定本地8888端口 并监听端口数据 // 加入某个组播 // 组播地址是D类地址 udpsocket->joinMulticastGroup(QHostAddress("244.0.0.3")); //udpsocket->leaveMulticastGroup(); // 离开组播地址 setWindowTitle("服务器端口:8888"); // 接收消息处理 处理信号 QUdpSocket::readyRead connect(udpsocket,&QUdpSocket::readyRead, [=]() { //QByteArray arr = udpsocket->readAll(); char buf[1024]={0}; // 缓冲区 QHostAddress add; quint16 port; // 套接字获取对方的IP、端口、并读取对方发送来的信息 qint64 len = udpsocket->readDatagram(buf,sizeof(buf),&add,&port); if(len > 0){ QString str =QString("[%1:%2]:%3") .arg(add.toString() .arg(port) .arg(buf)); ui->textEdit->setText(str); } });
2、发送数据处理
void Widget::on_buttonsend_clicked() { // 获取端口 IP信息 QString ip = ui->lineEditIP->text(); int port = ui->lineEditPort->text().toInt(); // 获取编辑区内容 QString tmp = ui->textEdit->toPlainText(); // 发送消息 udpsocket->writeDatagram(tmp.toUtf8(),QHostAddress(ip),port); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步