Связь через 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-адрес действительным? А какие еще могут быть ошибки? Я предполагаю, что пакеты не блокируются моим брандмауэром, поскольку они видны на сетевом мониторе.
Буду очень признателен за вклад в этом:)
Бест, Мортен