$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] No packets received with boost::asio::ip::udp::socket set to multicast group
From: Lennyk (lennyk430_at_[hidden])
Date: 2009-02-18 11:32:10
Hi,
I'm using boost 1.35 on a Linux machine.
I've written an application which creates a 
boost::asio::ip::udp::socket, then binds to a certain local address & 
port - and finally I've created an option to join a 
boost::asio::ip::multicast::join_group.
All seems well, and I see the registration request through a network 
sniffer.
BUT, when I try to receive packets after successfully joining the udp 
multicast group - I get NOTHING!
Needless to say, I see tons of packets streaming through with the sniffer.
What am I doing WRONG?
Here's my code (just a test application):
using namespace std;
using namespace boost::asio;
int main(int argc, char *argv[])
{
    if (argc != 4) { // Test for correct number of parameters
        cerr << "Usage: " << argv[0] << " <Local Address> <Multicast 
Address> <Port>" << endl;
        exit(1);
    }
    io_service m_io_service;
    ip::udp::socket m_socket(m_io_service);
    ip::address localAddress(ip::address_v4::from_string(argv[1]));
    ip::address multicastAddress(ip::address_v4::from_string(argv[2]));
    unsigned short port = atoi(argv[3]); // Second arg:  port
    boost::system::error_code error;
    m_socket.open(ip::udp::v4());
    m_socket.bind(ip::udp::endpoint(localAddress, port), error);
    if (error)
    {
        cout << "bind error!" << endl;
        exit(1);
    }
    ip::multicast::join_group option(multicastAddress.to_v4(), 
localAddress.to_v4());
    m_socket.set_option(option);
    vector<unsigned char> m_receiveBuffer;
    mutable_buffers_1 buf = buffer((void*)&m_receiveBuffer[0], 1024);
    int size = (int)m_socket.receive(buf, 0, error);
    if (error)
    {
        cout << "recv error!" << endl;
        exit(1);
    }
    return 0;
}
Thanks!
Lenny.