using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MultiCastServer server = new MultiCastServer();
MultiCastClient client = new MultiCastClient();
Thread ClientThread = new Thread(new ThreadStart(client.ReceiveData));
ClientThread.Start();
Thread ServerThread = new Thread(new ThreadStart(server.SendData));
ServerThread.Start();
}
}
class MultiCastServer {
private IPAddress multicastIP = IPAddress.Parse("224.110.10.1");
private int port = 5001;
public void SendData()
{
Console.WriteLine("Sender Start");
IPEndPoint multicastIep = new IPEndPoint(multicastIP, port);
UdpClient sendUdpClient = new UdpClient();
sendUdpClient.EnableBroadcast = true;
string sendString = "How are you";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(sendString);
try
{
sendUdpClient.Send(bytes, bytes.Length, multicastIep);
}
catch
{
Console.WriteLine("send error");
}
finally
{
sendUdpClient.Close();
Console.WriteLine("Sender Close");
}
}
}
class MultiCastClient {
private IPAddress multicastIP = IPAddress.Parse("224.110.10.1");
private int port = 5001;
public void ReceiveData()
{
Console.WriteLine("Reciever Start");
UdpClient receiveUdp = new UdpClient(this.port);
try
{
receiveUdp.JoinMulticastGroup(this.multicastIP,10);
}
catch (SocketException e)
{
Console.WriteLine(e.Message.ToString());
}
IPEndPoint remoteHost = null;
while (true)
{
try
{
byte[] bytes = receiveUdp.Receive(ref remoteHost);
string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
Console.WriteLine(str);
}
catch
{
Console.WriteLine("Reciever Close");
break;
}
}
}
}
}