crossplatform.ru

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


  Ответ в Проблема с bind'ом QUdpSocket'а
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
linch Дата 21.7.2008, 16:49
  Не вижу в вашем примере где вход в мультикаст-группу. Попробуете так:
bool ............::setupInterface(const QHostAddress &ip, const QHostAddress &mcastgroup, int ttl, int port);
{
    struct sockaddr_in saddr;
    struct ip_mreq mcast;
    
    int sd;
    int opt = 1;
    
    udpsd = new QUdpSocket(this);

    sd = udpsd->socketDescriptor();

    if (!udpsd->bind(ip, port, QUdpSocket::DontShareAddress | QUdpSocket::ReuseAddressHint))
    {
        qDebug() << "Connection error";
        return false;
    }

    memset(&saddr, 0, sizeof(saddr));
    saddr.sin_family = AF_INET;
    saddr.sin_addr.s_addr = inet_addr(mcastgroup.toString());
    saddr.sin_port = htons(port);

    memset(&mcast, 0, sizeof(struct ip_mreq));
    mcast.imr_multiaddr.s_addr = inet_addr(mcastgroup.toString());
    mcast.imr_interface.s_addr = inet_addr(ip.toString());

    if ((setsockopt(sd, IPPROTO_IP, IP_MULTICAST_LOOP, &opt, sizeof(int)) < 0) || (setsockopt(sd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) < 0) || (setsockopt(recvsd, IPPROTO_IP, IP_MULTICAST_IF, &mcast.imr_interface.s_addr, sizeof(struct in_addr)) < 0))
    {
        qDebug() << "Connection error";
        return false;
    }

    if (setsockopt(sd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mcast, sizeof(mcast)) < 0)
    {
        qDebug() << "Connection error";
        return false;
    }
}
VaMpir Дата 13.2.2008, 1:26
 
Цитата(Litkevich Yuriy @ 12.2.2008, 15:32) *
Предположение по проверке мультикаста на виндовозе.
Послать сообщение всем компам такой командой:
net send * foo

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

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

Сообщение посылает, служба включена, а код все равно не работает. Я даже раскопал немного староватую но 100% рабочую версию программы, но она тоже не идет ((
Litkevich Yuriy Дата 12.2.2008, 16:32
  Предположение по проверке мультикаста на виндовозе.
Послать сообщение всем компам такой командой:
net send * foo

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

К стати тут может админы Crossplatform.ru что нибудь посоветуют.
ViGOur Дата 12.2.2008, 12:56
  Я уже честно говоря и не помню какие, давно уже это было, попробую на досуге покопаться посмотреть что да как...
VaMpir Дата 12.2.2008, 11:42
 
Цитата(ViGOur @ 12.2.2008, 8:06) *
Фильтрация? Или может служба отвечающая за мультикаст откоючена?

Фильтрации нет. А вот на счет служб пожалуйста, поподробнее. Какие вообще службы должны за это отвечать?
ViGOur Дата 12.2.2008, 9:06
  Фильтрация? Или может служба отвечающая за мультикаст откоючена?
VaMpir Дата 11.2.2008, 22:11
 
Цитата(Litkevich Yuriy @ 11.2.2008, 16:21) *
Цитата(VaMpir @ 11.2.2008, 20:07) *
А не подскажете, как можно это настроить под Windows или Линукс?

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

Ну, брандмауэры я отключил в первую очередь:-) Причем в ХР и с панели управления, и как службу, но все равно... (((
Litkevich Yuriy Дата 11.2.2008, 17:21
 
Цитата(VaMpir @ 11.2.2008, 20:07) *
А не подскажете, как можно это настроить под Windows или Линукс?

гм, я может чушь скажу, но не в брандмауэре ли затык, режит пакеты и все, в openSUSE в YaST отключи брандмауэр совсем, для теста.
В виндовозе если ХР, то я даже затрудняюсь сказать как его надежно отрубить :D
VaMpir Дата 11.2.2008, 17:07
 
Цитата(ViGOur @ 11.2.2008, 10:02) *
Может все проблема не в коде, а в настройках сетевого интерфейса?

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

Вроде поддерживает, по крайней мере так пишет. А не подскажете, как можно это настроить под Windows или Линукс? (без разницы какая версия)
ViGOur Дата 11.2.2008, 11:02
  Может все проблема не в коде, а в настройках сетевого интерфейса?

Проверь, поддерживает ли он мультикаст: QNetworkInterface::CanMulticast...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 22:52