使用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);
}
相关推荐
爱吃小白兔的猫2 小时前
【基础篇三】WebSocket:实时通信的革命
网络·websocket·网络协议
老六ip加速器2 小时前
如何给电脑换个ip地址?电脑换ip几种方法
网络协议·tcp/ip·电脑
云畅新视界2 小时前
HOTDOG构建“IP×用户”共创生态,激活数字文化新势能
网络·网络协议·tcp/ip
深蓝海拓2 小时前
通信名词解释:I2C、USART、SPI、RS232、RS485、CAN、TCP/IP、SOCKET、modbus等
网络·网络协议·tcp/ip
m0_720245015 小时前
QT(四)基本组件
数据库·qt·microsoft
IOT-Power6 小时前
Qt项目中使用 FieldManager 实现多进程间的字段数据管理
开发语言·qt·命令模式
zc-code10 小时前
HTTP性能优化实战:从协议到工具的全面加速指南
网络·网络协议·http·缓存·性能优化·html
Misnice10 小时前
Mac查看本机ip地址
网络协议·tcp/ip·macos
Arwen30314 小时前
免费 SSL 证书申请简明教程,让网站实现 HTTPS 访问
网络协议·https·ssl
重启的码农14 小时前
深入fecal实现 (6) 伽罗瓦域 GF(256) 运算
c++·网络协议