/** * Used to Join Multicast Group. * @param The Socket File Descriptor */ void Radio::joinMulticastGroup( int socketFD, bool type ) { if( socketFD != -1 ) { struct sockaddr_in socketSendAddr; memset( &socketSendAddr, 0, sizeof( socketSendAddr ) ); socketSendAddr.sin_family = AF_INET; socketSendAddr.sin_addr.s_addr = inet_addr(this->m_RadioConfig.getAddress( ).toStdString( ).c_str( ) ); if( type ) { socketSendAddr.sin_port = htons( this->m_RadioConfig.getRTCPPort( ) ); } else { socketSendAddr.sin_port = htons( this->m_RadioConfig.getRTPPort( ) ); } ip_mreq mreq; memset( &mreq, 0, sizeof( mreq ) ); mreq.imr_multiaddr.s_addr = inet_addr( this->m_RadioConfig.getAddress( ).toStdString( ).c_str( ) ); mreq.imr_interface.s_addr = htons( INADDR_ANY ); if( setsockopt( socketFD, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char far * )&mreq, sizeof( mreq ) ) < 0 ) { QMessageBox::critical( NULL, "Error Joing Multicast Group", "Could not join Multicast group. Another application must be using it.", QMessageBox::Ok, QMessageBox::Ok ); } } }