使用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);
}
相关推荐
7ACE43 分钟前
Wireshark TS | TLP 超时时间
网络·网络协议·tcp/ip·wireshark·tcpdump
金色熊族4 小时前
解析QTransform的用法
qt
凯瑟琳.奥古斯特6 小时前
NAT原理及作用详解
网络·网络协议
追烽少年x7 小时前
Qt多线程编程:QThread与QtConcurrent的对比与应用
qt
_Evan_Yao8 小时前
从 IP 路由到 Agent 路由:最长前缀匹配如何帮你分发任务?
java·网络·后端·网络协议·tcp/ip
数据法师19 小时前
开源情报收集工具GhostTrack深度测评:IP、手机号、用户名的合规信息查询方案
网络·网络协议·tcp/ip
想成为优秀工程师的爸爸21 小时前
第三十篇技术笔记:郭大侠学UDS - 人有生老三千疾,望闻问切良方医
网络·笔记·网络协议·tcp/ip·信息与通信
小短腿的代码世界21 小时前
Qt实时盈亏计算深度解析:从持仓数据到动态盈亏展示
开发语言·qt
Python私教1 天前
GenericAgent PySide6 桌面应用深度解析:悬浮按钮 + 聊天面板的原生 Qt 方案
开发语言·数据库·qt
用户805533698031 天前
现代Qt开发教程(新手篇)1.11——定时器
c++·qt