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.dll> using namespace System; using namespace System::Net; using namespace System::Net::Sockets; using namespace System::Text; // This program shows how to use the MultiCastOption type. In particular, // it shows how to use the MultiCastOption(IPAddress, IPAddress) constructor, // You need to use this constructor, in the case of multihomed host (i.e., // a host with more than one network card). With the first parameter you // specify the multicast group address, with the second you specify the // local address of one of the network cards 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 from // the command line. // public ref class TestMulticastOption { private: static IPAddress^ mcastAddress; static int mcastPort; static Socket^ mcastSocket; static MulticastOption^ mcastOption; static void MulticastOptionProperties() { Console::WriteLine( "Current multicast group is: {0}", mcastOption->Group ); Console::WriteLine( "Current multicast local address is: {0}", mcastOption->LocalAddress ); } static void StartMulticast() { try { mcastSocket = gcnew 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 = dynamic_cast<EndPoint^>(gcnew IPEndPoint( localIPAddr,mcastPort )); mcastSocket->Bind( localEP ); // Define a MuticastOption object specifying the multicast group // address and the local IPAddress. // The multicast group address is the same one used by the server. mcastOption = gcnew MulticastOption( mcastAddress,localIPAddr ); mcastSocket->SetSocketOption( SocketOptionLevel::IP, SocketOptionName::AddMembership, mcastOption ); } catch ( Exception^ e ) { Console::WriteLine( e ); } } static void ReceiveBrodcastMessages() { bool done = false; array<Byte>^bytes = gcnew array<Byte>(100); IPEndPoint^ groupEP = gcnew IPEndPoint( mcastAddress,mcastPort ); EndPoint^ remoteEP = dynamic_cast<EndPoint^>(gcnew IPEndPoint( IPAddress::Any,0 )); try { while ( !done ) { Console::WriteLine( "Waiting for Multicast packets......." ); Console::WriteLine( "Enter ^C to terminate." ); mcastSocket->ReceiveFrom( bytes, remoteEP ); Console::WriteLine( "Received broadcast from {0} :\n {1}\n", groupEP, Encoding::ASCII->GetString( bytes, 0, bytes->Length ) ); } mcastSocket->Close(); } catch ( Exception^ e ) { Console::WriteLine( e ); } } public: static void Main() { // Initialize 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 values // used by the sender. mcastAddress = IPAddress::Parse( "224.168.100.2" ); mcastPort = 11000; // Start a multicast group. StartMulticast(); // Display multicast option properties. MulticastOptionProperties(); // Receive brodcast messages. ReceiveBrodcastMessages(); } }; int main() { TestMulticastOption::Main(); }
#using <System.dll> using namespace System; using namespace System::Net::Sockets; using namespace System::Net; using namespace System::Text; // This is an auxiliary program to be used in conjunction with a 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 // from the command line. // ref class TestMulticastOption { private: static IPAddress^ mcastAddress; static int mcastPort; static Socket^ mcastSocket; static void JoinMulticast() { try { // Create multicast socket. mcastSocket = gcnew Socket( AddressFamily::InterNetwork,SocketType::Dgram,ProtocolType::Udp ); // Get the local IP address used by the listener and the sender to // exchange data in a multicast fashion. Console::Write( "\nEnter local IPAddress for sending multicast packets: " ); IPAddress^ localIPAddr = IPAddress::Parse( Console::ReadLine() ); // Create an IPEndPoint Object*. IPEndPoint^ IPlocal = gcnew IPEndPoint( localIPAddr,0 ); // Bind this end point to the multicast socket. mcastSocket->Bind( IPlocal ); // Define a MuticastOption Object* specifying the multicast group // address and the local IPAddress. // The multicast group address is the same one used by the listener. MulticastOption^ mcastOption; mcastOption = gcnew MulticastOption( mcastAddress,localIPAddr ); mcastSocket->SetSocketOption( SocketOptionLevel::IP, SocketOptionName::AddMembership, mcastOption ); } catch ( Exception^ e ) { Console::WriteLine( "\n {0}", e ); } } static void BrodcastMessage( String^ message ) { IPEndPoint^ endPoint; try { //Send multicast packets to the listener. endPoint = gcnew IPEndPoint( mcastAddress,mcastPort ); mcastSocket->SendTo( ASCIIEncoding::ASCII->GetBytes( message ), endPoint ); Console::WriteLine( "Multicast data sent....." ); } catch ( Exception^ e ) { Console::WriteLine( "\n {0}", e ); } mcastSocket->Close(); } public: static void main() { // Initialize 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 values // used by the sender. mcastAddress = IPAddress::Parse( "224.168.100.2" ); mcastPort = 11000; // Join the listener multicast group. JoinMulticast(); // Broadcast message to the listener. BrodcastMessage( "Hello multicast listener." ); } }; int main() { TestMulticastOption::main(); }
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.


