У меня есть несколько процессов-отправителей, каждый из которых выполняет одну и ту же программу-отправитель, короче говоря, эти отправители записывают в один и тот же порт в 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
?Если нет, что может произойти (например, пропущен какой-либо пакет данных или получены неверные данные)?