Связь через BootP и UDP-сокет с Qt

Я создаю компьютерный клиент, который получает данные от монитора медицинского пациента через UDP IP. Я использую QTs API и, следовательно, класс QUdpSocket для установления связи. Монитор, с которого я хочу получать данные, зависит от сервера BootP и IP-адреса. Это успешно достигнуто, и IP, который я дал, это "192.168.10.10". С помощью Microsoft Network Monitor я вижу, что пакеты, которые я хочу прочитать из моей программы, отправляются из - Источник: 192.168.10.10 в - Назначение: 192.168.10.255. Порт источника и назначения: 24005.

Код, который я использую для установления связи и чтения дейтаграмм, выглядит следующим образом:

connectIndicationPort=24005;
connectIndicationAddress=QHostAddress("192.168.10.255");
connectIndicationSocket = new QUdpSocket;

int test = connectIndicationSocket->bind(connectIndicationAddress, connectIndicationPort);
if(test)
{
qDebug() << "Connection to port "<< connectIndicationPort <<", at" << connectIndicationAddress  << "succeeded.";
    bool res = connect(connectIndicationSocket, SIGNAL(readyRead()), this, SLOT(readConnectIndicationDatagram()));
}
else
    qDebug() << "Connection to port "<< connectIndicationPort <<", at" << connectIndicationAddress  << "failed.";

Я также пробовал различные варианты команды bind() как:

connectIndicationSocket->bind(connectIndicationPort);

connectIndicationSocket->bind(connectIndicationPort, QUdpSocket::ShareAddress)

connectIndicationSocket->bind(QHostAddress::Broadcast, connectIndicationPort)

без удачи.

У меня мало опыта работы с IP-сетями, и я не знаю, где это не получается. Например, правильно ли привязывать сокет к адресу назначения или это должен быть адрес источника? (Я пробовал оба). И является ли назначенный IP-адрес действительным? А какие еще могут быть ошибки? Я предполагаю, что пакеты не блокируются моим брандмауэром, поскольку они видны на сетевом мониторе.

Буду очень признателен за вклад в этом:)

Бест, Мортен

0 ответов

Другие вопросы по тегам