没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
工程训练 基于 的聊天工具开发
工程训练报告
——基于 JAVA 的聊天工具开发
Name:Solomon1558
StuNo:**********
Class:CS.4
Mentor:陈波
工程训练 基于 的聊天工具开发
前言:
写作目的:
本届工程训练历时两周,行将结束。本报告将以项目的进展顺序架构,梳
理项目层次,整理项目思路,从而加深对项目的理解,提出自己的感悟与思考。
行文思路:
本次工程训练主要涉及 大方面:网络编程、数据库访问、图形界面。我
将以这 方面综合项目进度组织报告的层次、内容。在正文部分力求抓住主要
问题,阐明项目的思路与具体实现,做到层次清晰,简洁准确。同时我还会在
附录部分针对项目中提到的知识、模式加以补充,达到拓展思维、深刻认识的
效果。
第一章. 网络编程
1.1 C/S 结构的编写
作为一个 软件,最基本的工作就是编写 与 。本项目采用基
于 的 进行两个程序之间的双向通信。其基本工作原理如下:
在服务器端通过指定一个用来等待的连接的端口号创建一个
实例。
在客户端通过规定一个主机和端口号创建一个 实例连到服务器上。
类的 方法使服务器处于阻塞状态等待用户请求。
工程训练 基于 的聊天工具开发
我们需要考虑的问题有:
两个或多个程序之间的通信,涉及到请求和回复,并且通信所传输的内容
根据请求的不同而不同。因此在实际设计、编程时要考虑的复用问题与多线程。
为了解决以上问题,我们在客户端与服务器端建立一个通道,用来传输 可
串行化(Serializable)的对象,这个对象有两个参量:类型与对象的内容。
因而我们需要定义两个继承了 接口的实体类:!"#$ %
和 !$ %。这两个实体类具有两个私有成员: 型的 &'(表示请求)
回 复 类 型 * , $ % 型 的 &+,'( 表 示 内 容 * 。 这 两 个 实 体 类 都 有
(*,-(*,-(*方法和构造函数。
编程实现:
client 端的网络编程初步编写非常简单:只需 . 一个 类的对象
,规定一个主机和端口号,连到服务器上。
实际上,我们对 端的要求很简单:就是信息的发送与接收,并不涉及
复杂的处理过程。一种较好的方法是在类中写一个返回类型为 !$ %
的静态方法/sendRequest()并将输入输出封装为 $ %#、
$ %#对象,将对象串行化[1]。在这个静态方法中创建 实例
与服务器连接,并在对象流中 .请求,,回复,即 ,与 功能。
这种设计称作“信封模式”,或“门面模式”(01,2*。[2]
其 优 点 是 : 建 立 连 接 、 发 送 、 接 收 对 象 等 操 作 被 封 装 到 门 面 方 法
,!"#(*中,使用时直接调用门面的方法就可以与服务器通信,不用了解具体的实
现方法以及相关的业务顺序。
以下是 NetAccessHelper 类的主体框架。
工程训练 基于 的聊天工具开发
public static ResponseObject sendRequest(RequestObject reqObject)
{
ResponseObject resObject = null;
try {
// 1.connect to the server
// 2.get oos,ois
// 3.send
// 4.receive
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return resObject;
}
现 在考 虑 服 务 器 端 : 通 过 指 定 一 个 用 来 等 待 连 接 的 端 口 号 创 建 一 个
实例, 类的 方法使服务器处于阻塞状态等待用
户请求。3类的代码如下:
public class ChatServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(10000);
System.out.println("Server is running....");
Socket clientSocket;
WorkerThread worker;
for (;;) {
clientSocket = serverSocket.accept();
worker = new WorkerThread(clientSocket);
worker.start();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
工程训练 基于 的聊天工具开发
1.2 多线程创建
在 4 循环中,每有一个客户端的连接,就实例化一个 53, 对象。
53, 类有两个私有的成员变量 3,,构造函数和 #(*
函数。
此处采用了“策略模式”(Strategy Pa-ern) [3]:
需要定义一个策略接口 RequestHandler,其后的实现类都继承这个接
口。
从 对 象 流 中 读 取 请 求 信 息 !"#$ % "#$ % 6
(!"#$ %*7,$ %(*8
因为 !"#$ %)!$ %实体都含有 9:'9:+,' 的私
有成员变量。使用 .3 对 !"' 进行判断,选相应的实现
类 9:!"#;, 的构造函数初始化 !"#;,类型的对象
3,。
最后调用实现方法,将返回对象赋予 $ %将其 . 进对
象流。
采用策略模式的好处在于:具有高内聚低耦合的特点,还有很好扩展性,
也就是 OCP 原则,策略类可以继续增加下去,这对支持后续的多种请求-响应非
常重要。
1.3 实体类
请求/回复
为了支持策略模式,实现不同请求的响应回复,创建实体类 !"#$ %
!$ % 类是有必要的。
剩余42页未读,继续阅读
资源评论
- 亦歌么2018-08-09不错,谢谢分享!!!
- erge-erge2015-06-09资源很不错,找到了想要的
- TanH.blog2018-11-06还可以,比较简单
- TF_TC2015-06-22初学者能学到东西
Solomon1588
- 粉丝: 609
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功