I want to have several incarnations of the same program listening to the same
multicast address/port. But I'm currently getting a
listener: can't bind local socket (errno 98)
error on the second incarnation. Here is my code:
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero ((char *) &mreq, sizeof (mreq));
mreq.imr_multiaddr.s_addr = inet_addr(udp_ip_addr);
mreq.imr_interface.s_addr = inet_addr(if_for_mc);
/* mreq.imr_interface.s_addr = htonl(INADDR_ANY); */
optval = 1;
setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
setsockopt(sockfd, IPPROTO_IP, SO_REUSEADDR, (char *)&optval, sizeof(optval));
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(atoi(av[3]));
bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
I thought that the SO_REUSEADDR sockopt would let me re-bind to the same
address? What am I doing wrong?
Dave
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]