以下是组播的代码:
具体的介绍请参见msdn如何使用多播
private UdpAnySourceMulticastClient _client = null;
public multicastTransfer()
{
_client = new UdpAnySourceMulticastClient(IPAddress.Parse(GROUP_ADDRESS), GROUP_RECEIVE_PORT);
_client.BeginJoinGroup(
result =>
{
// Complete the join
try
{
_client.EndJoinGroup(result);
_client.MulticastLoopback = false;//自己不接收自己发出的消息。
isJoined = true;
}
catch (Exception e)
{
isJoined = false;
}
//receive data
receive();
}, null);
}
接收
private static void receive()
{
if (isJoined)
{
byte[] remoteInfo = new byte[100];
_client.BeginReceiveFromGroup(remoteInfo, 0, 100,
receiveCallback =>
{
IPEndPoint remoteEp = null;
try
{
_client.EndReceiveFromGroup(receiveCallback, out remoteEp);
//send message to remoteEp or send to group
//对接收到的消息remoteInfo进行处理,
//........
//回调receive,使其作为服务器持续监听
receive();
}
catch (Exception e)
{}
}, null);
}
}