Colin Burn


I'm trying to find out how IPv6 Multicast works, from a C# application's viewpoint.

How are multicast addresses assigned i.e. how would an application obtain a multicast address for use on the public internet.

How does an application connect to a multicast address and recieve data. i.e. Computer A is multicasting how does computer Z register its interest in that multicast when the public internet (Computers B through Y) stand in the way.



Re: Common Language Runtime IPv6 Multicast

Martin Xie - MSFT

Hi Colin,

Please refer to the following material and hope that can help you:

IPv6 Client Server Network Applications in C# .NET

This response contains a reference to a third party World Wide Web site. Microsoft is providing this information as a convenience to you. Microsoft does not control these sites and has not tested any software or information found on these sites; therefore, Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. There are inherent dangers in the use of any software found on the Internet, and Microsoft cautions you to make sure that you completely understand the risk before retrieving any software from the Internet.

Multicast Programming

HOW TO: Use SetSocketOption() with MulticastInterface OptionName in Visual Studio .NET

Relevant thread: About developing IPv6 Multicast Video Chatting Programme

Re: Common Language Runtime IPv6 Multicast

Colin Burn

Im not sure these links are what Im after. Perhaps Ive not dug deeply enough yet. They seem to deal with link-local multicast in which choosing a multicast address seems less important. I want an address that I can use on the public IPv6 internet.

From my other internet research I think what Im really asking about is .Net support (or even Windows support, that I can inter-op with) for MADCAP and DHCPv6.

Are these systems in-the-wild yet Does Windows Vista/Teredo support them Does Teredo support multicast

I assume from a code point of view there are two distinct tasks:

  1. On the server side, I need to communicate with MADCAP/DHCPv6 to obtain a multicast address, then create a socket using this address as an endpoint ( ), then start broadcasting data through this socket.
  2. On the client side, I need to obtain the multicast address from the server, probably through a normal socket connection, then create a socket on the client side with an endpoint ( ) set to the same multicast address. Then start reading data out of this socket.

Does this all sound right

Re: Common Language Runtime IPv6 Multicast

Martin Xie - MSFT

Global multicast is not supported in IPv6. Actually on internet, there is only global unicast address existed.

For multicast and anycast addresses, they are for subnet.

For more information, please download the IPv6 whitepaper from Microsoft site:

In IPv6 network, broadcast is not supported any more. If you want to perform broadcast in public network, you still need to use IPv4 protocol.


Re: Common Language Runtime IPv6 Multicast



I have written a C code to receive a IPv6 multicast from a Remote-NDIS device usb connected to my PC having Windows XP.

But the problem I am facing is that ,even though the device multicasts some data to my PC, I am not able to recv. Majority of the times when I restart my PC, it works fine and receives the data.

I use ethereal to see whether is the device actually pumping data. It every time does show data being multicasted.

I tried giving priority to interface,but still works adhocly sometimes...

the steps I foloow are

1. Create socket

2. bind to in6addr_any and port

3. setsocketopt to join multicast address, giving interface=0

4. recv

Please request for help.