Qt之UDP多播(组播)的使用

发布时间 2023-12-01 21:00:23作者: TechNomad
UdpSocket::UdpSocket(QObject *parent) : QObject(parent)
{
    //本机IP
    QString local_ip = "192.168.101.11";

    m_udp_socket = new QUdpSocket(this);
    connect(m_udp_socket, &QUdpSocket::readyRead, this, &UdpSocket::received_data);

    int ret = m_udp_socket->bind(QHostAddress(local_ip), MULTI_CAST_PORT, QUdpSocket::ShareAddress);
    if (!ret) {
        qDebug()<<"bind multi cast failed...";
    }

    QHostAddress multi_address(MULTI_CAST_IP);
    bool join_result = m_udp_socket->joinMulticastGroup(multi_address);
    if (!join_result) {
        qDebug() << "add multi cast group failed...";
    }

}

void UdpSocket::received_data()
{
    QByteArray buffer;
    buffer.resize(m_udp_socket->pendingDatagramSize());
    m_udp_socket->readDatagram(buffer.data(), buffer.size());

    qDebug() << "buffer:" << buffer;
}