Trying to receive from a multicast address
Hi,
I've been trying to write up a program that sends and receives 'tweets' using multicast. I've got the sending part working but for some reason I can't seem to get the receiving part working.
For receiving this is what I've got:
insert
Code:
void receiveTweets(void) {
int status;
// open a socket
SOCKET s = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in receive;
receive.sin_family = AF_INET;
receive.sin_addr.s_addr = inet_addr("224.28.99.66");
receive.sin_addr.s_addr = INADDR_ANY;
receive.sin_port = htons(33118);
status = bind(s, (struct sockaddr *)&receive, sizeof(struct sockaddr_in));
if(status != 0)
{
printf("Bind unsuccessful");
}
else
{
struct ip_mreq mreq; //PROVIDE MULTICAST GROUP INFO
mreq.imr_multiaddr.s_addr = inet_addr("224.28.99.66");
mreq.imr_interface.s_addr = INADDR_ANY;
setsockopt (s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq, sizeof(mreq));
receive.sin_family = AF_INET;
receive.sin_addr.s_addr = inet_addr("224.28.99.66");
char buff[MTU];
int bytes = -1;
while (1)
{
status = recvfrom(s, buff, strlen(buff), 0, (struct sockaddr*)&receive, (int *)sizeof(struct sockaddr_in));
if(status > 0)
{
printf("Received: \"%s\"", buff);
}
}
}
closesocket(s);
return;
}
This code seems to have recvfrom return -1 (the errror) but I can't seem to see where I'm going wrong. Can anyone help me??
Thanks