Russian Qt Forum

Qt => Работа с сетью => Тема начата: frontwise от Апрель 14, 2009, 03:07



Название: Определение адреса хоста, с которого получена udp datagram
Отправлено: frontwise от Апрель 14, 2009, 03:07
Собственно, как?
В QtDemo есть пример Broadcast Receiver.

Код:
     while (udpSocket->hasPendingDatagrams()) {
         QByteArray datagram;
         datagram.resize(udpSocket->pendingDatagramSize());
         udpSocket->readDatagram(datagram.data(), datagram.size());
         statusLabel->setText(tr("Received datagram: \"%1\"")
                              .arg(datagram.data()));
     }
Мне нужно здесь определить, с какого IP получено сообщение.
udpSocket->peerName() возвращает null, даже если udpSocket->state() в connected (пробывал с udpSocket->waitForConnected(0)).


Название: Re: Определение адреса хоста, с которого получена udp datagram
Отправлено: Rcus от Апрель 14, 2009, 05:48
А читать документацию по QUdpSocket::readDatagram не пробовали?


Название: Re: Определение адреса хоста, с которого получена udp datagram
Отправлено: frontwise от Апрель 14, 2009, 11:03
А читать документацию по QUdpSocket::readDatagram не пробовали?
Вы про два последних параметра?
Код:
udpSocket->readDatagram ( datagram.data(), datagram.size(), addr, &prt );
Не работает, *addr и prt не изменяются после вызова функции.


Название: Re: Определение адреса хоста, с которого получена udp datagram
Отправлено: frontwise от Апрель 15, 2009, 00:39
Была какая-то проблема с сетевыми настройками, перегрузился - работает. Возможно, как-то виноваты виртуальные сети VMWare. Тему можно сносить.