ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

提供用户数据包协议(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
posted on 2007-03-13 12:56  Laeb  阅读(3438)  评论(0编辑  收藏  举报