Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

udp multicast ports in .net code

Tags:

c#

multicast

it only works when I use the same port(9050 or some other) in both send and receive, then how can I receive the multicast in more than one client at the same time on the same computer? that creates a socket error of using the same port more than once if I use the same port in more than one client

http://codeidol.com/csharp/csharp-network/IP-Multicasting/Csharp-IP-Multicast-Support/

    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    class UdpClientMultiSend
    {
      public static void Main()
      {
       UdpClient sock = new UdpClient();
       IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050);
       byte[] data = Encoding.ASCII.GetBytes("This is a test message");
       sock.Send(data, data.Length, iep);
       sock.Close();
      }
    }




using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class UdpClientMultiRecv
{
  public static void Main()
  {
   UdpClient sock = new UdpClient(9050);
   Console.WriteLine("Ready to receive…");
   sock.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);
   IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
   byte[] data = sock.Receive(ref iep);
   string stringData = Encoding.ASCII.GetString(data, 0, data.Length);
   Console.WriteLine("received: {0} from: {1}", stringData, iep.ToString());
   sock.Close();
  }
}

1 Answers

See the answer to this post: Connecting two UDP clients to one port (Send and Receive)

You have to set the socket option before binding.

static void Main(string[] args)
{
    IPEndPoint localpt = new IPEndPoint(IPAddress.Any, 6000);

    UdpClient udpServer = new UdpClient();
    udpServer.Client.SetSocketOption(
        SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
    udpServer.Client.Bind(localpt);

    UdpClient udpServer2 = new UdpClient();
    udpServer2.Client.SetSocketOption(
        SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

    udpServer2.Client.Bind(localpt); // <<---------- No Exception here

    Console.WriteLine("Finished.");
    Console.ReadLine();
}
like image 104
Grant Avatar answered Dec 03 '25 18:12

Grant



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!