Что произойдет, когда многопроцессорная запись в один и тот же порт в localhost с использованием QUdpSocket: write (host :: broadcast)? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть несколько процессов-отправителей, каждый из которых выполняет одну и ту же программу-отправитель, короче говоря, эти отправители записывают в один и тот же порт в localhost, например:

udpSocket->writeDatagram(datagram, QHostAddress::Broadcast, 45454);

Процессы-получатели, каждый из которых также работаетодна и та же программа-получатель, связанная с одним и тем же портом, например:

udpSocket->bind(45454, QUdpSocket::ReuseAddressHint); // windows system

connect(udpSocket, SIGNAL(readyRead()),
        this, SLOT(processPendingDatagrams()));

// ...

void Receiver::processPendingDatagrams()
{
    QByteArray datagram;
    while (udpSocket->hasPendingDatagrams()) {
        datagram.resize(int(udpSocket->pendingDatagramSize()));
        udpSocket->readDatagram(datagram.data(), datagram.size());
        statusLabel->setText(tr("Received datagram: \"%1\"")
            .arg(datagram.constData()));
    }
}

Все эти процессы выполняются на локальном хосте.

Я провел некоторый эксперимент на моей машине с двумя отправителями и тремя получателями., кажется, что получатель может получить данные успешно.

Но можем ли мы сделать какое-либо предположение о поведении / данных, когда многопроцессорная запись в один и тот же порт в localhost использует QUdpSocket?Если нет, что может произойти (например, пропущен какой-либо пакет данных или получены неверные данные)?

...