Qt Network Broadcasting Вопрос: Получить IP отправителя - PullRequest
2 голосов
/ 03 мая 2011

В QtSDK есть простой пример сетевого вещания. Легко отправлять и получать информацию о трансляции. А на стороне получателя я хочу знать, чей широковещательный пакет я только что получил. Я пытаюсь QUdpSocket.peerName () в функции обратного вызова сигнала readyRead, но я получаю пустую строку. Любая подсказка?

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

Вы можете получить IP-адрес отправителя при чтении пакета с помощью QUdpSocket :: readDatagram () . Вам нужно передать readDatagram () указатель на QHostAddress, в котором будет храниться адрес:

QHostAddress senderAddress;
yourSocket->readDatagram(&data, size, &senderAddress);
// senderAddress now represents the sender address

Вы можете получить адрес в виде QString или целого числа из senderAddress, если вам нужно, см. Документацию для QHostAddress .

Если вам нужно имя хоста, вы можете использовать QHostInfo для обратного просмотра (но вы не гарантированно получите имя).

0 голосов
/ 03 мая 2011

Из документов:

Возвращает имя пира, как указано в connectToHost (), или пустое QString, если connectToHost () не был вызван.

Итак, если вы позвонили connectToHost(), вы должны получить результат. Вы также можете попробовать peerAddress () . Если вы не всегда подключаетесь через имя, я бы не ожидал, что вы всегда сможете выполнить обратный поиск и получить имя.

...