Mail Archives: cygwin/2009/02/20/07:48:43
On Feb 20 04:05, victhor_1983 wrote:
>
> Hi,
>
> I have written a C++ program for a Multicast Client that compiles and runs
> on Ubuntu. I tried to compile and run it on Cygwin version 1.5.25 (June
> 2008). However, when I run the code, the Multicast receiving socket doesn't
> seem to work. The problem comes when I use setsockopt() to add Multicast
> membership. The errno() declaration returns 22 (EINVAL), but I cannot find a
> solution. My code is:
>
> int Descriptor, Descriptor2, payloadoffset,sqnum, T_ns, status;
> long nsegundos,Dnsegundos, segundos, Dsegundos;
> struct sockaddr_in Direccion, Direccion2;
> unsigned short Puerto;
> struct timespec valorcontador,valorcontador2,Next;
> struct ip_mreq Multic;
>
> Descriptor=socket(AF_INET,SOCK_DGRAM,0);
> Puerto=12100;
> Direccion.sin_family=AF_INET;
> Direccion.sin_port=htons(Puerto);
> Direccion.sin_addr.s_addr=inet_addr("224.0.22.1");
> memset(&(Direccion.sin_zero),'\0',8);
>
> Multic.imr_multiaddr.s_addr=inet_addr("224.0.22.1");
> Multic.imr_interface.s_addr=inet_addr("138.4.32.34");
> status= setsockopt(Descriptor, IPPROTO_IP, IP_ADD_MEMBERSHIP, &Multic,
> sizeof(Multic));
> if (status<0){
> printf("Fallo al añadir el grupo de Multicast, codigo %i\n",
> errno);
> }
I'm sorry, I can't tell you why this doesn't work. Cygwin's setsockopt
function is basically just a shim between application and Winsock's
setsockopt call. It only performs special actions on a very limited
set of options, only two actually: (SOL_SOCKET, SO_REUSEADDR) and
(IPPROTO_IP, IP_TOS). I'm also quite multicast illiterate. Is it
possible that you have to use the IP_MULTICAST_IF option on Windows
before you can use IP_ADD_MEMBERSHIP?!?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
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/
- Raw text -