WinSockマルチキャストについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
aytell

WinSockマルチキャストについて

#1

投稿記事 by aytell » 6年前

コード:

#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);
	}
}
MDNSで名前や各レコードを取得したいのですが、
どのように取得したらいいのでしょうか?

“C言語何でも質問掲示板” へ戻る