Search on the blog

2014年2月23日日曜日

マルチキャストアドレスとは?

 マルチキャストアドレスが何なのか概念だけは知っていましたが、今日はじめてマルチキャストアドレスを使ってプログラムを書きました。

 UDPを使って、サーバーから230.0.0.1というグループに属するクライアントすべてにデータグラムを送信するというものです。

Broadcasting to Multiple Recipients

 最初見たときこの230.0.0.1というアドレスが何なのか分からなかったので調べてみました。

The multicast addresses are in the range 224.0.0.0 through 239.255.255.255.
ということらしいです[1]。

さらに、
The range of addresses between 224.0.0.0 and 224.0.0.255, inclusive,is reserved for the use of routing protocols and other low-leveltopology discovery or maintenance protocols, such as gateway discoveryand group membership reporting.

とある[1]ので、アプリケーションで自由に使えるマルチキャストアドレスは224.0.1.0 - 239.255.255.255ということだと思います。
と思いましたが、他にも予約されているアドレスがある[2]ようなので230.x.x.xあたりを使っておくと無難かなと思います。

ちなみに二進数で表記するとマルチキャストアドレスは以下のようになります。

1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx   (xは任意)

Javaの場合、マルチキャストアドレスではないアドレスにジョインしようとすると以下の例外が出ました。
Exception in thread "main" java.net.SocketException: Not a multicast address
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:306)
at com.kenjih.udp.MulticastClient.main(MulticastClient.java:12)


References
[1] IPv4 Multicast Address Space Registry
[2] Multicast address - Wikipedia, the free encyclopedia

0 件のコメント:

コメントを投稿