![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
VaMpir |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 8.2.2008 Пользователь №: 88 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Хочу в своей программе использовать отправку и прием мультикастных сообщений. Использую Qt 4.3.3 , ОС Windows XP.
Использую код для привязки сокета: CODE if(!socket->bind( address ,socketPort, QUdpSocket::ReuseAddressHint | QUdpSocket::DontShareAddress)) qDebug() << "Connection error"; // Для посылки сообщений: CODE QByteArray datagram=QByteArray().append(msg); // msg - текстовое сообщение if(socket->socket->writeDatagram(datagram,address,socketPort) == -1) { // Здесь идет обработка ошибок } Далее идет прием сообщений (в слоте, назначенном на сигнал readyRead()) CODE while (socket->socket->hasPendingDatagrams()) { datagram.resize(socket->socket->pendingDatagramSize()); if(socket->socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort) == -1) { emit newErrorMessage(tr("Ошибка чтения информации с узла %1").arg(hostName(sender))); } else { processTheDatagram(datagram,sender); } } В итоге, я могу получить сообщения, посланные на конкретный адрес (192.168.0.1) , но не могу получить сообщения, посланные на 192.168.0.255. Точнее мог, до недавнего времени, после недавней переустановки Windows перестали приходить сообщения. При попытке использования данного кода по Linux openSuse 10.3 вообще не смог добиться приема мультикаста :-( Сообщение отредактировал VaMpir - 10.2.2008, 15:03 |
|
|
![]() |
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Может все проблема не в коде, а в настройках сетевого интерфейса?
Проверь, поддерживает ли он мультикаст: QNetworkInterface::CanMulticast... |
|
|
VaMpir |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 8.2.2008 Пользователь №: 88 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Может все проблема не в коде, а в настройках сетевого интерфейса? Проверь, поддерживает ли он мультикаст: QNetworkInterface::CanMulticast... Вроде поддерживает, по крайней мере так пишет. А не подскажете, как можно это настроить под Windows или Линукс? (без разницы какая версия) |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 7.6.2025, 9:45 |