crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

VaMpir
  опции профиля:
сообщение 10.2.2008, 15:03
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 8.2.2008
Пользователь №: 88

Спасибо сказали: 0 раз(а)




Репутация:   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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 31.5.2025, 11:28