If you wish to communicate with multiple clients and can live with the possibility of delivery failure then using Udp is a definite possibility.
The UdpClient supports the use of Multicasting via it's .JoinMulticastGroup and .DropMulticastGroup methods.
The sending application could use code similar to the following to send data. When dealing with multicasting you need to define an IP address within a specific range (this has nothing to do with the actual address assigned to the network card itself) http://www.tcpipguide.com/free/t_IPMulticastAddressing.htm gives a quick idea of the ranges you should choose from.
IPAddress groupAddress = IPAddress.Parse("239.1.2.3");
int remotePort = 1234;
int localPort = 1234;
IPEndPoint remoteEP = new IPEndPoint(groupAddress, remotePort);
UdpClient server = new UdpClient(localPort);
server.Send(data, data.Length, remoteEP);
clients would then need to register with the same group address like so...
IPAddress groupAddress = IPAddress.Parse("239.1.2.3");
UdpClient udpClient = new UdpClient();
udpClient.JoinMulticastGroup(groupAddress, 10);
the first parameter defines the address of the multicast group as used by the sending app while the second is how many routers will pass the information along before it is dropped from the network.