提供用户数据包协议(UDP)网络服务。
- 命名空间:System.Net.Sockets
- 汇编集:System(在 system.dll 中)
语法
public class UdpClient : IDisposable
备注
UdpClient 类在同步阻塞模式中为发送和接收无连接的 UDP 数据包而提供了简单的方法。因为 UDP 是一种无连接的传输协议,所以你不需要在发送和接收数据之前建立任何远程主机连接。你只需要按照下列方式来建立默认的远程主机选项:
- 使用远程主机名称和端口号作为参数来创建 UdpClient 类的实例。
- 创建 UdpClient 类的实例然后调用 Connect 方法。
你可以使用任何由 UdpClient 所提供的发送方法把数据发送给远程设备。然后使用 Receive 方法来接收来自于远程主机的数据。
提示:如果你已经指定了一个默认的远程主机,就不要使用主机名称或者 IPEndPoint 来调用 Send 方法。如果你这样做,那么 UdpClient 将会抛出一个异常。
UdpClient 方法同样允许你发送和接收多点传送的数据包。而使用 JoinMulticastGroup 方法可以把 UdpClient 订阅到多点传送分组。也可以使用 DropMulticastGroup 方法把 UdpClient 从多点传送分组的订阅中取消。
范例
下列范例使用端口为 11000 的主机名称 www.contoso.com 建立了一个 UdpClient 连接。一个字符串消息会被发送到两个单独的远程主机中。另外,Receive 方法会阻塞执行,直到消息被接收到为止。因为 Receive 使用了被传递的 IPEndPoint 参数,所以回应主机的身份也会被显示。
// 这个构造器武断地分配了本地端口号。 UdpClient udpClient = new UdpClient(11000); try{ udpClient.Connect("www.contoso.com", 11000); // 把消息发送到已连接的主机。 Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?"); udpClient.Send(sendBytes, sendBytes.Length); // 使用可选的主机名称和端口参数把消息发送到不同的主机。 UdpClient udpClientB = new UdpClient(); udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 11000); //IPEndPoint 对象允许我们读取任何来源中的数据包。 IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); // 程序流程直到远程主机返回了这个套接字的消息之前都会被阻塞。 Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); string returnData = Encoding.ASCII.GetString(receiveBytes); // 使用 IPEndPoint 对象来检测已回应的主机。 Console.WriteLine("This is the message you received " + returnData.ToString()); Console.WriteLine("This message was sent from " + RemoteIpEndPoint.Address.ToString() + " on their port number " + RemoteIpEndPoint.Port.ToString()); udpClient.Close(); udpClientB.Close(); } catch (Exception e ) { Console.WriteLine(e.ToString()); }
.NET Framework 安全性
- SocketPermission:建立一个输出连接或者接受一个输入请求。
继承层次
System.Object System.Net.Sockets.UdpClient