使用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);
}
相关推荐
誰能久伴不乏23 分钟前
【Qt实战】工业级多线程串口通信:从底层协议设计到完美收发闭环
linux·c++·qt
liu****30 分钟前
4.Qt窗口开发全解析:菜单栏、工具栏、状态栏及对话框实战
数据库·c++·qt·系统架构
JoySSLLian44 分钟前
IP SSL证书:一键解锁IP通信安全,高效抵御网络威胁!
网络·人工智能·网络协议·tcp/ip·ssl
云小逸2 小时前
【网络通信】DNS、SNMP、DHCP 等 UDP 服务解析
网络·网络协议·udp
半壶清水3 小时前
[软考网规考点笔记]-操作系统核心知识及历年真题解析
网络·网络协议·算法
方芯半导体4 小时前
EtherCAT “通信 + 控制“ 的全国产化控制方案,ESC芯片(FCE1323)与国产MCU芯片功能板解析
xml·网络·单片机·嵌入式硬件·网络协议·机器人·自动化
Zach_yuan6 小时前
UDP网络编程:从入门到精通
linux·网络·网络协议·udp
从此不归路6 小时前
Qt5 进阶【11】图形视图框架:用 QGraphicsView 搭一个流程图编辑器
开发语言·c++·qt
B2_Proxy6 小时前
破解TikTok运营困境:静态住宅IP与封号限流深度解析
网络·网络协议·tcp/ip
凯子坚持 c6 小时前
Qt常用控件指南(7)
服务器·数据库·qt