您的位置:首页 > 编程语言 > C#

C#简单组播示例

2011-01-16 16:43 369 查看
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;
}
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: