crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Проблема с bind'ом QUdpSocket'а
linch
  опции профиля:
сообщение 21.7.2008, 16:49
Сообщение #11


Новичок


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

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




Репутация:   0  


Не вижу в вашем примере где вход в мультикаст-группу. Попробуете так:
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;
    }
}
Причина редактирования: для кода используем тэг: code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.4.2024, 3:10