零点起飞学Java之网络编程实例局域网通信软.pptx_第1页
零点起飞学Java之网络编程实例局域网通信软.pptx_第2页
零点起飞学Java之网络编程实例局域网通信软.pptx_第3页
零点起飞学Java之网络编程实例局域网通信软.pptx_第4页
零点起飞学Java之网络编程实例局域网通信软.pptx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第17章 网络编程实例局域网通信软件,Java语言具有非常强大的网络应用开发能力。本章通过实现一个简单的局域网通信软件,展示了Java语言网络编程知识在实际系统开发过程中的具体应用。本章实例主要涉及Java网络编程知识和Java图形界面编程知识。,17.1 实 例 概 述,本章的实例将开发一款用于局域网内通信的软件。该通信软件采用“客户端服务器”模式。服务器负责提供通信服务,如建立连接、处理请求数据等,并能与客户机对等地交互发送消息。客户机可以向服务器发送连接请求。连接建立后可以与服务器互发消息进行通信。该软件的工作流程大致如图所示。,17.2 系 统 设 计,对系统需求进行了充分的分析之后,在具体开发之前需要进行一下总体设计。系统设计包括系统总体结构、构建开发环境、确定系统工程目录这几个方面,下面分别对其进行介绍。,17.2.1 系统总体结构,在对整个系统进行需求分析后,将系统功能划分为服务器端程序和客户端程序两大块。系统的功能结构图如图所示。 其中,服务器端程序主要用于监听客户端的连接请求,连接建立后能够与客户端进行通信。客户端程序负责向服务器发出连接请求,连接建立后能够与服务器端进行通信。另外,两端的程序在一方断开后都能自动向对方发送信息提示。,17.2.2 构建开发环境,本系统是Java网络编程方面应用的实例。对于通信过程中的数据没有进行持久性保存,所以不需采用数据库系统。根据系统的实际情况,可采用如下的开发环境。 操作系统:Windows7; 编程语言:JDK 1.7; 开发工具:Eclipse 4.0。,17.2.3 系统工程目录,在开发一个实际应用系统的时候,应该规划好系统工程的文件结构。有规划的工程文件结构便于在开发过程中进行管理,也使得开发工作的内容更加清晰。在Eclipse开发环境下,本系统最终的工程目录结构如图所示。 系统的工程名称为jywtx,所包含的文件夹及功能包主要包括以下几个方面。 src目录:用于存放系统的所有源代码。源代码按照包结构进行组织。 business包:存放业务实现类。 util包:存放系统的实用工具类,为其他包共用。 window包:存放系统的图形界面窗口类。,17.3 公 共 模 块,在系统开发过程中,经常需要设计一些公共模块,供系统中其他模块共同调用。本系统的公共模块主要由util包来实现。util包主要用于存放一些实用工具类,系统所有模块中经常需要使用的一些工具类或系统常量等可以在该包中定义。 本系统的util包只定义了一个Constant类,用于定义系统常量。 Constant类共定义了3个常量。其中,SERVER_HOST常量表示服务器主机的IP地址,主要供客户端请求连接使用。LISTEN_PORT常量表示服务器主机监听的端口号。CONNECT_QUIT常量为退出标识,用于服务器和客户端断开连接时向对方发送退出的标志。,17.4 服务器端程序,服务器端程序主要用于监听客户端的连接请求。当客户端请求连接后能够处理请求信息,连接建立后能够与客户端进行通信等。,17.4.1 工作流程,服务器端程序的工作流程图如图所示。,17.4.1 工作流程,下面对上述流程图做下简要说明。 (1)服务器端以指定端口号为参数,创建一个ServerSocket对象,监听该端口。 (2)服务器端程序使用ServerSocket对象的accept()方法,接收来自客户机程序的连接请求。此时服务器端将一直保持阻塞状态,直到收到客户端发来的连接请求。 (3)accept()方法接收到客户端请求后返回Socket对象,连接成功建立。 (4)使用Socket对象创建输入、输出流对象。使用流对象的方法完成和客户端的数据传输。其中,包括处理接收到的客户端信息及向客户端发送信息两种操作。 (5)客户端工作完毕后,关闭和客户端通信的流和通信的Socket,并进入下一次循环。,17.4.2 源程序,服务器端程序主要由business包的Server.java和window包的ServerFrame.java两个文件组成。,17.4.3 程序解释,下面对上述源程序中的关键实现部分给予重点说明。 (1)程序入口为Server类的main()方法。main()方法创建了Server类的实体。服务器端界面的生成和监听服务的启动都是在Server类的构造方法中完成的。 (2)Server类的构造方法中首先创建了图形界面ServerFrame类的实体,并将其设置为可见。 服务器端图形界面的主要实现类为window.ServerFrame。其中,ServerFrame类提供了一个public方法display()。服务器端业务程序Server类可以调用该方法在图形界面上半部的文本区域内显示相关文字信息。 (3)显示完图形界面后,Server类的构造方法调用startServer()方法启动服务。startServer()方法实现了端口监听、建立连接、通信等服务器端程序的主要核心业务。所以它也是服务器端程序的实现重点。,17.4.3 程序解释,(4)startServer()方法首先创建了ServerSocket类的实例,开始监听指定端口。该方法被设计成每次只接收一个客户端的连接请求。直到与当前客户端通信完成断开连接后,才开始接收下一个客户端的请求。在程序实现上,对一个客户端的通信过程都是在while循环中完成的。一次迭代服务一个客户端。监听端口的同时在图形界面上显示“等待连接”的提示信息。此时,服务器端程序处于阻塞状态,直到接收到客户端的连接请求。 (5)待接收到客户端的连接请求后,程序在图形界面上显示相关的连接信息。此时,服务器端与客户端的连接已经建立,双方可以互发消息进行通信。服务器端发送消息的操作方法为,在图形界面左下角的文本域内输入相应文本,然后单击“发送”按钮。当前客户端图形界面上即会显示服务器端发来的消息内容。 (6)上述循环退出的条件为收到的标识为退出连接的消息。触发退出连接行为的动作可能为客户端输入退出标识信息、客户端直接关闭了操作界面等。这些动作都会为服务器端程序自动发送退出连接的消息。服务器端程序接收到退出连接的消息后,退出无限循环。结束当前客户端的连接,并在图形界面上显示相关信息。结束当前连接后,程序关闭相应的输入、输出流,进入下一次循环迭代,等待下一个客户端连接。,17.5 客户端程序,比较服务器端来说,客户端程序相对简单。客户端程序主要用于向服务器端发出连接请求,连接建立后能够与服务器端进行通信。,17.5.1 工作流程,客户端程序的工作流程图如图所示。,17.5.1 工作流程,下面对上述流程图做下简要说明。 (1)客户端以指定主机、指定端口号为参数,创建一个Socket对象。 (2)向服务器端发出连接请求。连接成功建立后返回Socket对象。 (3)使用Socket对象创建输入、输出流对象。使用流对象的方法完成向服务器端发送和接收数据。 (4)通信完毕后,关闭和服务器端通信的流和Socket。,17.5.2 源程序,客户端程序主要由business包的Client.java和window包的ClientFrame.java两个文件组成。,17.5.3 程序解释,下面对上述源程序中的关键实现部分给予重点说明。 (1)程序入口为Client类的main()方法。main()方法创建了Client类的实体。客户端界面的生成和通信程序的启动都是在Client类的构造方法中完成。 (2)Client类的构造方法中首先创建了图形界面ClientFrame类的实体,并将其设置为可见。客户端图形界面的主要实现类为window.ClientFrame。其中,ClientFrame类提供了一个public方法display()。客户端业务程序Client类可以调用该方法在图形界面的上半部的文本区域内显示相关文字信息。 (3)显示完图形界面后,Client类的构造方法调用startClient()方法启动通信程序。startClient()方法实现了请求连接、与服务器端通信的主要核心业务,所以它也是客户端程序的实现重点。,17.5.3 程序解释,(4)startClient()方法首先创建了Socket类的实例,用于请求指定服务器及指定端口的连接。在图形界面上会显示连接建立情况的信息。 (5)与服务器端成功建立连接后,即可以向服务器发送消息进行通信。发送消息的操作方法为在图形界面左下角的文本域内输入相应文本。然后单击“发送”按钮,服务器端图形界面上即会显示客户端发来的消息内容。 (6)上述循环退出的条件为收到标识为退出连接的消息。触发退出连接行为的动作可能为服务器端输入退出标识信息、服务器端直接关闭了连接等。这些动作都会为客户端程序自动发送退出连接的消息。 客户端程序接收到退出连接的消息后,退出无限循环,结束当前客户端的连接,并在图形界面上显示相关信息。结束当前连接后,程序关闭相应的输入、输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论