使用UDP实现发送和接收

接收信息

cpp 复制代码
void MainWindow::receiveMessages()
{
    QHostAddress peerAddr;
    quint16 peerPort;

    while (udpSocket->hasPendingDatagrams()) {
        /* udpSocket发送的数据报是 QByteArray类型的字节数组 */
        QByteArray datagram;
        /* 重新定义数组的大小 */
        datagram.resize(udpSocket->pendingDatagramSize());
        /* 读取数据,并获取发送方的 IP地址和端口 */
        udpSocket->readDatagram(datagram.data(), datagram.size(),  &peerAddr,  &peerPort);
        /* 转为字符串 */
        QString str = datagram.data();
        /* 显示信息到文本浏览框窗口 */
        textBrowser->append("接收来自" + peerAddr.toString() + ":" + QString::number(peerPort) + str);
    }
}

单发

cpp 复制代码
void MainWindow::sendMessages()
{
    /* 文本浏览框显示发送的信息 */
    textBrowser->append("发送:" + lineEdit->text());
    /* 要发送的信息,转为 QByteArray类型字节数组,数据一般少于 512个字节 */
    QByteArray data = lineEdit->text().toUtf8();
    /* 要发送的目标 Ip地址 */
    QHostAddress peerAddr = IPlist[comboBox->currentIndex()];

    /* 要发送的目标端口号 */
    quint16 peerPort = spinBox[1]->value();

    /* 发送消息 */
    udpSocket->writeDatagram(data, peerAddr, peerPort);
}

广播

cpp 复制代码
void MainWindow::sendBroadcastMessages()
{
    /* 文本浏览框显示发送的信息 */
    textBrowser->append("发送:" + lineEdit->text());
    QByteArray data = lineEdit->text().toUtf8();
    /* 广播地址,一般为 255.255.255.255,
     * 同一网段内监听目标端口的程序都会接收到消息 */
    QHostAddress peerAddr = QHostAddress::Broadcast;

    /* 要发送的目标端口号 */
    quint16 peerPort = spinBox[1]->text().toInt();

    /* 发送消息 */
    udpSocket->writeDatagram(data, peerAddr, peerPort);
}
相关推荐
黄昏晓x1 天前
Linux ---- UDP和TCP
linux·tcp/ip·udp
fzb5QsS1p1 天前
告别重复造轮子,Qt 快速开发脚手架
开发语言·qt·php
森G1 天前
58、最佳实践与注意事项---------多线程、竟态条件和同步
c++·qt
阿捏利1 天前
详解网络协议(十六)UDP协议
网络·网络协议·udp
taxunjishu1 天前
AGV 与伺服协同控制Profinet 转 Modbus TCP塔讯智能网关仓储场景应用实践
网络·网络协议
小樱花的樱花1 天前
1 项目概述
开发语言·c++·qt·ui
情绪雪1 天前
IP 协议基本原理
网络·网络协议·tcp/ip
Lucas_coding1 天前
【语音相关ASR】OpenAI 兼容 Qwen_ASR 接口调用实战:SDK 与 HTTP 方式详解
网络·网络协议·http
MinterFusion1 天前
如何在openKylin 2.0 SP2中安装Qt(v0.2.2)(上)
开发语言·qt·软件开发·系统维护·明德融创·openkylin
特立独行的猫a1 天前
HarmonyOS鸿蒙PC的QT应用开发:(一、开发环境搭建及第一个HelloWorld)
qt·华为·harmonyos·鸿蒙pc