信息科学与工程学院
Java 课程设计
实验报告
学生姓名
学
号
专业班级
指导教师
学
院
信息科学与工程学院
完成时间
信息科学与工程学院
目录
1 目录...................................................................................................................................................1
2 实验一 JAVA 聊天室 .......................................................................................................................2
2.1
2.1.1
2.1.2
2.1.3
2.1.3
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
2.3
2.4
2.5
需求分析..............................................................................................................................2
开发背景................................................................................................................. 2
设计要求................................................................................................................. 2
设计目的................................................................................................................. 3
功能实现................................................................................................................. 3
总体设计..............................................................................................................................3
设计思想................................................................................................................. 3
基本设计概念和处理流程..................................................................................... 3
总体结构................................................................................................................. 5
功能分配................................................................................................................. 5
接口设计................................................................................................................. 6
主要模块................................................................................................................. 7
细节 ....................................................................................................................................10
运行结果............................................................................................................................ 11
程序源代码 ........................................................................................................................25
3 实验二白板程序......................................................................................... 8 错误!未定义书签。
3.1
3.1.1
3.1.2
3.1.3
3.1.3
3.2
3.2.1
3.2.2
3.2.3
3.3
3.4
需求分析............................................................................................................................85
开发背景............................................................................................................... 85
设计要求............................................................................................................... 85
设计目的............................................................................................................... 85
功能实现............................................................................................................... 85
程序实现.........................................................................................8 错误!未定义书签。
程序设计流程....................................................................................................... 85
程序所用到的类................................................................................................... 87
对类的分析........................................................................................................... 88
程序运行结果....................................................................................................................89
程序源代码 ........................................................................................................................95
JAVA 课程设计总结:...................................................................................... 错误!未定义书签。17
第 一 页 共 一百二十 页
信息科学与工程学院
实验一:用 JavaSocket 编程开发聊天室
一、 需求分析
1.1 开发背景
在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网
络,由此而产生的聊天工具越来越多,类似 MSN、QQ,网络聊天时一类的聊天系统的发展日
新月异,因此产生了制作一个类似 QQ 的网络聊天工具的想法,且通过制作该程序还能更好
的学习网络软件编程知识。
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网编程中有两
个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何
可靠高效的进行数据传输。在 TCP/IP 协议中 IP 层主要负责网络主机的定位,数据传输的路
由,由 IP 地址可以唯一地确定 Internet 上的一台主机。而 TCP 层则提供面向应用的可靠的
或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心 IP 层是如何处理数
据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服
务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作
为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客
户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。
1.2 设计要求
实践基本要求:
1.了解实验目的及实验原理;
2.编写程序,并附上程序代码和结果图;
3.总结在编程过程中遇到的问题、解决办法和收获。
实践的内容或要求:
1. 用 Java 图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个
服务器。每个客户端能够输入账号。
2. 可以实现群聊(聊天记录显示在所有客户端界面)。
3. 完成好友列表在各个客户端上显示。
4. 可以实现私人聊天,用户可以选择某个其他用户,单独发送信息。
5. 服务器能够群发系统消息,能够强行让某些用户下线。
6. 客户端的上线下线要求能够在其他客户端上面实时刷新。
实践类型或性质:开发性
1.3 设计目的
第 二 页 共 一百二十 页
信息科学与工程学院
通过指导学生上机实践,对 JavaSocket 编程、Java 多线程、Java 图形用户界面进行掌
握。
1.4 功能实现
1. 用 Java 图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个
服务器。每个客户端能够输入账号。
2. 可以实现群聊(聊天记录显示在所有客户端界面)。
3. 完成好友列表在各个客户端上显示。
4. 可以实现私人聊天,用户可以选择某个其他用户,单独发送信息。
5. 服务器能够群发系统消息,能够强行让某些用户下线。
6. 客户端的上线下线要求能够在其他客户端上面实时刷新。
二、 总体设计
2.1 设计思想
套接字对象在网络编程中扮演者重要的角色,可以用套接字技术编写一个聊天室,服务器
为每个客户启动一个线程。在该线程中通过套接字和客户交流信息,当客户向服务器发送一
条聊天信息“大家好”时,服务器要让所有的这些线程中的输入流写入信息大家好,这样所
有的客户的套接字的输入流就都读取到了这一条信息。如果把信息“你好”发送给特定用户,
服务器就让特定线程中的输出流写入信息“你好”,那么只有特定客户的套机字的输入流可
以读取到这条信息。
在聊天室中需要对用户上线下线的状态进行修改,进而统计在线人数、查找某用户等。因
而需要用到 java 链表来实现。由于 Java 语言不像 c 或 c++一样可以利用线性表的链式存储
结构,用节点和指针来表示,在 Java 中是没有指针的,但是可以通过使用对象的引用来实
现链表。链表的结点个数称为链表的长度。因此在 Java 中可以定义两个类来实现链表的操
作,分别为节点类和链表类。在本设计中对用户的存储就是利用链表来实现的。
2.2 基本设计概念和处理流程
本系统运行用 JAVA 开发,采用 C\S 结构,系统分为客服端和服务端两大模块,使用 Socket
类建立套接字实现客服端和服务端得通讯。
处理流程
发送请求
处理请求
第 三 页 共 一百二十 页
信息科学与工程学院
服务端
一个 ServerSocket 对象和一个 Socket 对象
客户端
一个 Socketd 对象
ServerSocket(port) 创 建
ServerSocket 对 象 提 供
TCP 连接服务
Accept()
在指定端口等待客户端
的连接请求
连接成功,获得一个已
连接的 socket 对象
InputStream
读取 Socket 对象的输
入流
OutputStream
写入 Socket 对象的输
出流
Socket.close()
关闭 TCP 连接
ServerSocket.close()
停止提供 TCP 连接服
务
申请连接
建 立 Socket
连接
通 过 流 传 送 数
据
Socket(host,port) 创 建
Socket 对象,向指定主机
端口发出连接请求
InputStream
读取 Socket 对象的输
入流
OutputStream
写入 Socket 对象的输
出流
Socket.close()
关闭 TCP 连接
TCP Socket 通信流程
第 四 页 共 一百二十 页
信息科学与工程学院
2.3 总体结构
网络聊天室
2.4 功能分配
客户端
客户端
服务端
服务端
客服端
向所有人或一个人发送消息
连接服务端
配置服务端
登录与注销
第 五 页 共 一百二十 页
信息科学与工程学院
等待客户连接
配置服务器侦听端口
向用户发送系统消息
统计在线人数、断开
连接等
2.5 接口设计
2.5.1 用户接口
提供一个用户操作界面:包括用户可以再界面中登录聊天室、输入消息、浏览聊天内容和聊
天对象。
同时提供一个服务器操作界面,通过服务器操作界面可以修改服务器的配置,知道用户的当
前状态,并可以给用户发送指定系统信息。
2.5.2 内部接口
Socket(string hont ,int port );
客户端使用 Socket 类建立与服务器的套接字连接。
ServerSocket(int port);
建立接收客户的套接字的服务器套接字。
2.6 主要模块
2.6.1 聊天室服务器端模块
聊天室服务器端模块主要有以下几部分组成
1、 主框架类(ChatServer.java)
第 六 页 共 一百二十 页
信息科学与工程学院
该文件包含名为 ChatServer 的 public 类,其主要功能是定义服务器的界面,添加事
件侦听鱼事件处理。ChatServer 类调用 ServerListen 类来实现服务端用户上线与下
线的侦听,调用 ServerReceive 类来实现服务器端消息的转发。
2、 服务器用户上线与下线侦听类。
该类对用户上线与下线的侦听是通过调用用户链表类来实现的,当用户的上线与下线
情况发生改变时,该类会对主类的界面进行相应的修改。
3、 服务器消息收发类
该类分别定义了向某用户及向所有人发送消息的方法,发送的消息会显示在主界面类
的界面上。
4 用户修改配置的类。
该类继承自 JDialog。使用户对服务器端口进行修改配置的类。
5 节点类
定义了链表中的用户
6 链表类
该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用
户名查找用户和各根据索引查找用户等方法。
7 服务器帮助类、
2.6.2 聊天室服务器端模块算法描述
JFrame
ActionListener
Thread
ChatServer
-port:public static in
-serverSocket:ServerSocket
-messageShow:JTextArea
-userLinkList:UserLinkList
-showStatus:JTextField
+ ChatServer():public
+init():public void
+startService():public void
+stopService():public void
+sendStopToAll():public void
+sendMsgToAll(String):public void
+ sendSystemMessage():public void
ServerListen
- server: ServerSocket
- userLinkList :UserLinkList
- isStop: public Boolean
+ServerListen(ServerSocket,JComboBox,JTextAre
a,JTextField,UserLinkList)
ServerReceive
-textarea:JTextArea
- userLinkList :UserLinkList
- isStop: public Boolean
+ServerListen(ServerSocket,JComboBox,JTextAre
a,JTextField,UserLinkList)
第 七 页 共 一百二十 页