网站大量收购独家精品文档,联系QQ:2885784924

《java-UDP实例程序2》.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《java-UDP实例程序2》.doc

UDP实例程序2 使用Java技术编写UDP程序,其程序结构与9.1中介绍的类似。在本节中我们举例说明如何使用Java语言设计UDP网络程序。 9.3.1 程序要求 在本节中,我们实现一个名叫Echo的协议(有些资料中叫回声协议)。Echo协议是一个非常简单的协议,它主要用于网络可达性的检测中。Echo协议的功能也十分简单,服务器在端口7检测接收到的信息,如果收到信息,则原封不动的重发回客户端。Echo协议工作时可以基于TCP协议,也可以基于UDP协议。本节我们实现基于UDP协议的Echo协议。 服务器端程序运行的窗口如图9-4所示,图中有3个客户端进行了请求。 图9-4 Echo服务器运行结果 Echo客户端程序运行结果如图9-5所示,图中客户端程序运行了3次。从图9-5中可以看出,客户端计算机输入的内容被Echo服务器原封不动的返回。 图9-5 Echo客户端程序运行结果 9.3.2 服务器程序 在设计服务器端程序之前,我们先来讨论一下在Java语言中与数据报程序设计有关的知识。数据报按用途我们可以将其分为两种:一种用来发送数据,该数据报要给出目的地址和端口号;另一种数据报用来从网络中接收数据。不管是发送或者接收UDP数据报,首先需要创建数据报套接口。 创建数据报套接口的DatagramSocket类 在Java语言里,数据报套接口由类java.net.DatagramSocket实现。 在TCP程序设计中,我们使用Socket创建一个客户端套接口,使用ServerSocket创建一个服务器套接口;但在Java的UDP程序设计中,DatagramSocket创建的套接口既可用于UDP客户端程序也可用于UDP服务器程序。 DatagramSocket类常用的构造方法有: public DatagramSocket() throws SocketException public DatagramSocket(int port) throws SocketException public DatagramSocket(int port, InetAddress laddr) throws SocketException 其中,构造方法中的port参数用于指定DatagramSocket绑定的端口,如果不指定port,系统自动为数据报套接口选择一个可用端口。以上带有两个参数的第3个构造方法创建一个数据报套接口,并将其绑定到指定的本地地址,这主要用于多IP地址的主机中。在上面的构造方法中,如果不能创建套接口或套接口无法绑定到指定的端口,则抛出SocketException异常。 DatagramSocket类中定义的几个常用方法是: public void send(DatagramPacket p) throws IOException:从当前数据报套接口发送一个数据报。发送数据报应包含将要发送的数据、数据长度、目标主机IP地址和目标主机端口号等信息。 public void receive(DatagramPacket p) throws IOException:从当前数据报套接口接收一个数据报。接收到的数据报中包含发送方的int timeout)设置阻塞时间,时间的单位为毫秒DatagramPacket类 Java.net包中的DategramPacket类用来创建UDP数据报,创建接收数据报的构造方法是: public DatagramPacket(byte[] buf, int length) public DatagramPacket(byte[] buf, int offset, int length) 其中,参数buf表示保存传入数据报的缓冲区,length表示希望接收到的数据报的最大长度,第二个构造方法中的offset参数,指定了缓冲区的偏移量,表示数据从buf[offset]开始存储。 下面的语句创建了一个接收缓冲区长度为8912个字节的UDP数据报: byte[ ] buffer = new byte[8912]; DatagramPacket datap = new DatagramPacket(buffer ,buffer.length( )); 在UDP报文中,数据报长度用2个字节的无符号整数表示,所以理论上UDP报文的最大长度为65536字节(包含UDP头部以及IP头部)。但是实际上,大多数系统限制了数据报的长度为8192字节。在具体的网络环境中,这个限制值可能更小。 创建发送数据报的构造方法是: public DatagramPacket(byte[] buf, int length, InetAddress address, int port) public DatagramPacket(byte[

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档