#include < winsock2.h>
#include < ws2tcpip.h>
#pragma comment(lib, "ws2_32.lib")
// サーバーソケットを作成する
SOCKET createServerSocket(unsigned short port)
{
SOCKET sock;
struct sockaddr_in adr;
adr.sin_family = AF_INET;
adr.sin_port = htons(port);
adr.sin_addr.S_un.S_addr = INADDR_ANY;
sock = socket(AF_INET, SOCK_DGRAM, 0);
bind(sock, (struct sockaddr *)&adr, sizeof(adr));
return sock;
}
void main()
{
WSADATA wsaData;
SOCKET sock;
struct sockaddr_in adr;
struct ip_mreq mr;
int len;
char buf[256];
int n;
WSAStartup(MAKEWORD(2,0),&wsaData);
mr.imr_multiaddr.s_addr = inet_addr("224.0.0.251");
mr.imr_interface.s_addr = INADDR_ANY;
sock = createServerSocket(5353);
if(setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,(const char *)&mr,sizeof(mr)) < 0)
{
printf("setsockopt fail\n");
}
else
{
printf("setsockopt success\n");
}
while(1)
{
len = sizeof(adr);
printf( "recvfrom にはいります\n" );
n = recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr *)&adr,&len);
buf[n] = '\0';
printf("multicast msg %s\n",buf);
}
}
どのように取得したらいいのでしょうか?