crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Проблема с bind'ом QUdpSocket'а
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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.2.2008, 11:02
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Может все проблема не в коде, а в настройках сетевого интерфейса?

Проверь, поддерживает ли он мультикаст: QNetworkInterface::CanMulticast...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VaMpir
  опции профиля:
сообщение 11.2.2008, 17:07
Сообщение #3


Новичок


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

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




Репутация:   0  


Цитата(ViGOur @ 11.2.2008, 10:02) *
Может все проблема не в коде, а в настройках сетевого интерфейса?

Проверь, поддерживает ли он мультикаст: QNetworkInterface::CanMulticast...

Вроде поддерживает, по крайней мере так пишет. А не подскажете, как можно это настроить под Windows или Линукс? (без разницы какая версия)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2008, 17:21
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(VaMpir @ 11.2.2008, 20:07) *
А не подскажете, как можно это настроить под Windows или Линукс?

гм, я может чушь скажу, но не в брандмауэре ли затык, режит пакеты и все, в openSUSE в YaST отключи брандмауэр совсем, для теста.
В виндовозе если ХР, то я даже затрудняюсь сказать как его надежно отрубить :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VaMpir
  опции профиля:
сообщение 11.2.2008, 22:11
Сообщение #5


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 11.2.2008, 16:21) *
Цитата(VaMpir @ 11.2.2008, 20:07) *
А не подскажете, как можно это настроить под Windows или Линукс?

гм, я может чушь скажу, но не в брандмауэре ли затык, режит пакеты и все, в openSUSE в YaST отключи брандмауэр совсем, для теста.
В виндовозе если ХР, то я даже затрудняюсь сказать как его надежно отрубить :D

Ну, брандмауэры я отключил в первую очередь:-) Причем в ХР и с панели управления, и как службу, но все равно... (((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.2.2008, 9:06
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Фильтрация? Или может служба отвечающая за мультикаст откоючена?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VaMpir
  опции профиля:
сообщение 12.2.2008, 11:42
Сообщение #7


Новичок


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

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




Репутация:   0  


Цитата(ViGOur @ 12.2.2008, 8:06) *
Фильтрация? Или может служба отвечающая за мультикаст откоючена?

Фильтрации нет. А вот на счет служб пожалуйста, поподробнее. Какие вообще службы должны за это отвечать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.2.2008, 12:56
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Я уже честно говоря и не помню какие, давно уже это было, попробую на досуге покопаться посмотреть что да как...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.2.2008, 16:32
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Предположение по проверке мультикаста на виндовозе.
Послать сообщение всем компам такой командой:
net send * foo

(служба сообщений должна быть запущена на тестируемых компах)

К стати тут может админы Crossplatform.ru что нибудь посоветуют.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VaMpir
  опции профиля:
сообщение 13.2.2008, 1:26
Сообщение #10


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 12.2.2008, 15:32) *
Предположение по проверке мультикаста на виндовозе.
Послать сообщение всем компам такой командой:
net send * foo

(служба сообщений должна быть запущена на тестируемых компах)

К стати тут может админы Crossplatform.ru что нибудь посоветуют.

Сообщение посылает, служба включена, а код все равно не работает. Я даже раскопал немного староватую но 100% рабочую версию программы, но она тоже не идет ((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.3.2024, 16:05