王思源

 

C#组播例子

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;
}
}
}

}
}

 

转自http://hi.baidu.com/dongyuejiang/blog/item/6bb81117cc6daa0a4b90a75b.html

posted on 2010-08-24 11:11  王思源  阅读(311)  评论(0)    收藏  举报

导航