MulticastOption Class
Contains IPAddress values used to join and drop multicast groups.
Assembly: System (in System.dll)
| Name | Description | |
|---|---|---|
![]() | MulticastOption(IPAddress) | Initializes a new version of the MulticastOption class for the specified IP multicast group. |
![]() | MulticastOption(IPAddress, Int32) | Initializes a new instance of the MulticastOption class with the specified IP multicast group address and interface index. |
![]() | MulticastOption(IPAddress, IPAddress) | Initializes a new instance of the MulticastOption class with the specified IP multicast group address and local IP address associated with a network interface. |
| Name | Description | |
|---|---|---|
![]() | Group | Gets or sets the IP address of a multicast group. |
![]() | InterfaceIndex | Gets or sets the index of the interface that is used to send and receive multicast packets. |
![]() | LocalAddress | Gets or sets the local address associated with a multicast group. |
| Name | Description | |
|---|---|---|
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
Use a MulticastOption to store the IPAddress of a multicast group you want to join or drop. Use the Socket.SetSocketOption method with the following parameters to join a multicast group.
Parameter | Value |
|---|---|
socketOptionLevel | |
socketOptionName | |
object | MulticastOption |
Use DropMembership to drop a multicast group.
The following examples join the default IP interface to an IP multicast group. They assume the IP multicast group address in the range 224.0.0.0 to 239.255.255.255.
using System; using System.Net; using System.Net.Sockets; using System.Text; // This is the listener example that shows how to use the MulticastOption class. // In particular, it shows how to use the MulticastOption(IPAddress, IPAddress) // constructor, which you need to use if you have a host with more than one // network card. // The first parameter specifies the multicast group address, and the second // specifies the local address of the network card you want to use for the data // exchange. // You must run this program in conjunction with the sender program as // follows: // Open a console window and run the listener from the command line. // In another console window run the sender. In both cases you must specify // the local IPAddress to use. To obtain this address run the ipconfig comand // from the command line. // namespace Mssc.TransportProtocols.Utilities { public class TestMulticastOption { private static IPAddress mcastAddress; private static int mcastPort; private static Socket mcastSocket; private static MulticastOption mcastOption; private static void MulticastOptionProperties() { Console.WriteLine("Current multicast group is: " + mcastOption.Group); Console.WriteLine("Current multicast local address is: " + mcastOption.LocalAddress); } private static void StartMulticast() { try { mcastSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Console.Write("Enter the local IP address: "); IPAddress localIPAddr = IPAddress.Parse(Console.ReadLine()); //IPAddress localIP = IPAddress.Any; EndPoint localEP = (EndPoint)new IPEndPoint(localIPAddr, mcastPort); mcastSocket.Bind(localEP); // Define a MulticastOption object specifying the multicast group // address and the local IPAddress. // The multicast group address is the same as the address used by the server. mcastOption = new MulticastOption(mcastAddress, localIPAddr); mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption); } catch (Exception e) { Console.WriteLine(e.ToString()); } } private static void ReceiveBroadcastMessages() { bool done = false; byte[] bytes = new Byte[100]; IPEndPoint groupEP = new IPEndPoint(mcastAddress, mcastPort); EndPoint remoteEP = (EndPoint) new IPEndPoint(IPAddress.Any,0); try { while (!done) { Console.WriteLine("Waiting for multicast packets......."); Console.WriteLine("Enter ^C to terminate."); mcastSocket.ReceiveFrom(bytes, ref remoteEP); Console.WriteLine("Received broadcast from {0} :\n {1}\n", groupEP.ToString(), Encoding.ASCII.GetString(bytes,0,bytes.Length)); } mcastSocket.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } public static void Main(String[] args) { // Initialize the multicast address group and multicast port. // Both address and port are selected from the allowed sets as // defined in the related RFC documents. These are the same // as the values used by the sender. mcastAddress = IPAddress.Parse("224.168.100.2"); mcastPort = 11000; // Start a multicast group. StartMulticast(); // Display MulticastOption properties. MulticastOptionProperties(); // Receive broadcast messages. ReceiveBroadcastMessages(); } } }
using System; using System.Net.Sockets; using System.Net; using System.Text; // This sender example must be used in conjunction with the listener program. // You must run this program as follows: // Open a console window and run the listener from the command line. // In another console window run the sender. In both cases you must specify // the local IPAddress to use. To obtain this address, run the ipconfig command // from the command line. // namespace Mssc.TransportProtocols.Utilities { class TestMulticastOption { static IPAddress mcastAddress; static int mcastPort; static Socket mcastSocket; static void JoinMulticastGroup() { try { // Create a multicast socket. mcastSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // Get the local IP address used by the listener and the sender to // exchange multicast messages. Console.Write("\nEnter local IPAddress for sending multicast packets: "); IPAddress localIPAddr = IPAddress.Parse(Console.ReadLine()); // Create an IPEndPoint object. IPEndPoint IPlocal = new IPEndPoint(localIPAddr, 0); // Bind this endpoint to the multicast socket. mcastSocket.Bind(IPlocal); // Define a MulticastOption object specifying the multicast group // address and the local IP address. // The multicast group address is the same as the address used by the listener. MulticastOption mcastOption; mcastOption = new MulticastOption(mcastAddress, localIPAddr); mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption); } catch (Exception e) { Console.WriteLine("\n" + e.ToString()); } } static void BroadcastMessage(string message) { IPEndPoint endPoint; try { //Send multicast packets to the listener. endPoint = new IPEndPoint(mcastAddress,mcastPort); mcastSocket.SendTo(ASCIIEncoding.ASCII.GetBytes(message), endPoint); Console.WriteLine("Multicast data sent....."); } catch (Exception e) { Console.WriteLine("\n" + e.ToString()); } mcastSocket.Close(); } static void Main(string[] args) { // Initialize the multicast address group and multicast port. // Both address and port are selected from the allowed sets as // defined in the related RFC documents. These are the same // as the values used by the sender. mcastAddress = IPAddress.Parse("224.168.100.2"); mcastPort = 11000; // Join the listener multicast group. JoinMulticastGroup(); // Broadcast the message to the listener. BroadcastMessage("Hello multicast listener."); } } }
Available since 1.1
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


