This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Cygwin 1.5.18: Problem using setsockopt() for multicast


On Thu, 17 Aug 2006, Dave Korn wrote:
> On 17 August 2006 14:45, Brian Ford wrote:
> > On Thu, 17 Aug 2006, Alessandro Saffiotti wrote:
> >>   imreq.imr_interface.s_addr = INADDR_ANY;
> >
> > INADDR_ANY is in host byte order, but you need network order for this
> > call.
>
>   Yeh, that's it!  And don't forget to use left-handed bits - the ordinary
> right-handed ones are no good for INADDR_ANY.  :)

Sorry, not enough coffee yet this morning ;-).  I was up all night with my
two month old daughter.

My point should have been that I use this construct every day in 1.5.18
and 1.5.21 within our application and it works fine.  I saw very few
differences.  Here is my snippet in case I missed something else obvious:

fd = socket(AF_INET, SOCK_DGRAM, 0);

Oh yeah, you must call the setsockopt below after the bind on windows.
Search MSDN for why.

{
    struct ip_mreq mreq;

    mreq.imr_interface.s_addr = htonl(INADDR_ANY);
    mreq.imr_multiaddr.s_addr = inet_addr("224.0.0.1");

    if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq,
                   sizeof(mreq)) < 0)
        perror("Unable to join 224.0.0.1");
}

-- 
Brian Ford
Lead Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

.


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]