c#udp单播多播广播
时间: 2023-08-06 21:06:21 浏览: 187
在C#中,你可以使用UDP协议进行单播、多播和广播通信。下面是一些基本概念和代码示例:
1. 单播(Unicast):将数据从一个发送方发送到一个接收方。
```csharp
// 发送方
using (UdpClient udpClient = new UdpClient())
{
string message = "Hello, Unicast!";
byte[] bytes = Encoding.ASCII.GetBytes(message);
udpClient.Send(bytes, bytes.Length, "接收方IP地址", 接收方端口号);
}
// 接收方
using (UdpClient udpClient = new UdpClient(接收方端口号))
{
IPEndPoint senderEndpoint = new IPEndPoint(IPAddress.Any, 0);
byte[] bytes = udpClient.Receive(ref senderEndpoint);
string message = Encoding.ASCII.GetString(bytes);
Console.WriteLine("接收到消息: " + message);
}
```
2. 多播(Multicast):将数据从一个发送方发送到一组接收方。
```csharp
// 发送方
using (UdpClient udpClient = new UdpClient())
{
udpClient.JoinMulticastGroup(组播组IP地址);
string message = "Hello, Multicast!";
byte[] bytes = Encoding.ASCII.GetBytes(message);
udpClient.Send(bytes, bytes.Length, 组播组IP地址, 接收方端口号);
}
// 接收方
using (UdpClient udpClient = new UdpClient(接收方端口号))
{
udpClient.JoinMulticastGroup(组播组IP地址);
IPEndPoint senderEndpoint = new IPEndPoint(IPAddress.Any, 0);
byte[] bytes = udpClient.Receive(ref senderEndpoint);
string message = Encoding.ASCII.GetString(bytes);
Console.WriteLine("接收到消息: " + message);
}
```
3. 广播(Broadcast):将数据从一个发送方发送到同一子网中的所有接收方。
```csharp
// 发送方
using (UdpClient udpClient = new UdpClient())
{
udpClient.EnableBroadcast = true;
string message = "Hello, Broadcast!";
byte[] bytes = Encoding.ASCII.GetBytes(message);
udpClient.Send(bytes, bytes.Length, "255.255.255.255", 接收方端口号);
}
// 接收方
using (UdpClient udpClient = new UdpClient(接收方端口号))
{
IPEndPoint senderEndpoint = new IPEndPoint(IPAddress.Any, 0);
byte[] bytes = udpClient.Receive(ref senderEndpoint);
string message = Encoding.ASCII.GetString(bytes);
Console.WriteLine("接收到消息: " + message);
}
```
请注意,示例中的IP地址和端口号需要根据实际情况进行替换。
阅读全文