- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 TCP, UDP编程概要
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 6.4 .NET中的UDP编程基础 6.4.1 UdpClient类 如果在创建UdpClient实例时没有指定远程主机信息,那么可以在发送数据前通过UdpClient的Connect方法先指定远程主机的地址和端口号,即指定连接信息。但是如果只需要接收数据,则不需要进行指定连接的操作。 对于连接信息的指定,主要包括三种方式,即直接在UdpClient的构造函数中指定,通过调用Connect方法指定和直接在Send方法中指定。而Connect方法又有三种重载形式,如下: ? UdpClient.Connect (IPEndPoint),使用指定的远程主机信息建立默认远程主机。 ? UdpClient.Connect (IPAddress, Int32),使用指定的IP地址和端口号建立默认远程主机。 ? UdpClient.Connect (String, Int32),使用指定的主机名和端口号建立默认远程主机。 下面的代码段实现了UdpClient实例创建和连接信息指定操作。 IPAddress m_ipA = IPAddress.Parse(m_hostIP); m_EndPoint = new IPEndPoint(m_ipA, m_port); m_client = new UdpClient(?); //创建UdpClient实例 m_client.Connect(m_EndPoint); //指定连接信息 3.数据发送和接收 UdpClient实例创建后便可以进行数据发送和接收操作,如图6.5所示。UdpClient中提供了Send方法来完成数据发送操作,其重载形式有如下三种。 6.4 .NET中的UDP编程基础 6.4.1 UdpClient类 ? UdpClient.Send (Byte[], Int32),将UDP数据报发送到默认的远程主机。 ? UdpClient.Send (Byte[], Int32, IPEndPoint),将UDP数据报发送到位于指定远程终结点的主机。 ? UdpClient.Send (Byte[], Int32, String, Int32),将UDP数据报发送到指定的远程主机上的指定端口。 因此,数据发送操作既可以在先指定连接信息的情况下给出发送数据及其长度进行发送,也可以由Send方法来指定远程主机的端口信息以及发送数据和长度进行发送。如下所示。 m_client.Send(data, data.Length);//在指定了连接信息后,直接给出数据及其长度进行发送 在UdpClient中提供了Receive方法来完成数据的接收操作,其申明形式如下: byte[] Receive ( ref IPEndPoint remoteEP )。 在接收缓冲区没有数据时,Receive 方法将阻止,直到数据报从远程主机到达为止。如果数据可用,则Receive方法将读取接收缓冲区的第一个数据报,并将数据部分作为字节数组返回。在返回数据的同时使用发送方的IPAddress和端口号来填充remoteEP参数。 如果在Connect方法中指定了默认的远程主机,则Receive方法将只接收来自该主机的数据报,其他所有数据报将被丢弃。因此,如果需要接收多播数据报,则在调用Receive方法之前不能利用Connect方法来指定连接信息,并且必须使用多播端口号来创建用于接收数据报的UdpClient。下面程序段实现了对远程主机所发送信息的接收操作。 6.4 .NET中的UDP编程基础 6.4.1 UdpClient类 IPEndPoint m_EndPoint; byte[] data; data = m_client.Receive(ref m_EndPoint);//接收数据,同时远程主机信息返回给m_EndPoint 4.关闭连接 使用UdpClient的最后一步是关闭连接,可以直接调用UdpClient的Close方法来实现。 6.4.2 基于UdpClient类的编程实例 在本节中设计了一个简单的群组讨论工具,即参加讨论者可以利用UDPClient客户端程序加入讨论群组,也可以随时退出群组。当参加者加入讨论群组后,便可以向该群组发表自己的意见,服务器程序UDPServer会将任何一位参加者所发表的意见转发给群组中的各位参加者,如图6.6所示。 在实现中,系统设计了三个类,其中客户端程序包括UDP
文档评论(0)