聊天室系统设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛科技大学操作系统课程设计

学生班级计算机132班

学生学号**********

学生姓名王永远

2016 5 18

______年 ___月 ___日

目录

设计题目:聊天室系统 (3)

一、设计目的及要求 (3)

1.1设计目的 (3)

1.2设计要求: (3)

二、技术背景 (3)

2.1网络编程 (3)

2.2网络通信 (3)

2.3 Socket (3)

2.4 TCP传输 (4)

2.5 Java的多线程机制 (4)

三、需求分析 (4)

3.1客户端 (4)

3.1.1登录 (4)

3.1.2多人聊天 (4)

3.1.3单人聊天 (5)

3.2服务器端 (5)

四、总体设计 (5)

4.1设计思想流程图 (5)

4.2设计思想分析 (6)

五、详细设计 (6)

5.1客户端设计 (7)

5.1.1登录界面 (7)

5.1.2聊天室界面 (7)

5.1.3单人聊天界面 (7)

5.2服务器端设计 (8)

六、系统测试 (8)

6.1登录测试 (8)

6.1.1用户名为英文字母 (8)

6.1.2用户名为中文 (9)

6.1.3用户名为标点符号 (9)

6.1.4多个用户有重名 (10)

6.1.5服务器地址不合法 (11)

6.1.6端口号不合法 (12)

6.1.7服务器未开启 (12)

6.2群发消息测试 (13)

6.3私聊测试 (15)

6.4用户列表显示测试 (16)

七、心得体会 (16)

八、参考资料 (16)

九、程序清单 (16)

设计题目:聊天室系统

一、设计目的及要求

1.1设计目的

通过该聊天室系统,掌握网络编程的概念及基于网络的C/S模式软件系统开发,掌握基于TCP 协议的Socket编程,掌握Java的多线程机制。

1.2设计要求:

实现多个用户之间类似于QQ的聊天程序,有聊天界面,多用户之间既可以实现群聊,也可以单独聊天。

二、技术背景

2.1网络编程

就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

2.2网络通信

(1)IP地址:网络中设备的标识,不易记忆,可用主机名

要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,在TCP/IP协议中,这个标识号就是IP地址。

(2)端口号:用于标识进程的逻辑地址

物理端口网卡口

逻辑端口我们指的就是逻辑端口

A:每个网络程序都会至少有一个逻辑端口

B:用于标识进程的逻辑地址,不同进程的标识

C:有效端口:0~65535,其中0~1024系统使用或保留端口。

(3)传输协议:通信的规则,常见的有UDP,TCP

UDP:将数据源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快。

TCP:建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低。

2.3 Socket

(1)Socket套接字

网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。

(2)Socket原理机制

A:通信的两端都有Socket。

B:网络通信其实就是Socket间的通信。

C:数据在两个Socket间通过IO传输。

2.4 TCP传输

(1)客户端思路

A建立客户端的Socket服务,并明确要连接的服务器。

B如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流.

C通过Socket对象的方法,可以获取这两个流

D通过流的对象可以对数据进行传输

E如果传输数据完毕,关闭资源

(2)服务器端思路

A建立服务器端的socket服务,需要一个端口

B服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信

C通过客户端的获取流对象的方法,读取数据或者写入数据

D如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的

2.5 Java的多线程机制

进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。

线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。

多进程是指操作系统能同时运行多个任务(程序),多线程是指在同一程序中有多个顺序流在执行。在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,启动JVM实际上就是在操作系统中启动了一个进程。在java中所有的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。

三、需求分析

实现聊天的功能,采用Java Socket编程,服务器与客户端采用了TCP/IP连接方式,在设计聊天方案时,可将所有信息发往服务器端,再由服务器进行处理,服务器端是所有信息的中心。

3.1客户端

3.1.1登录

用户需要填写用户名、服务器地址、端口号才可以进入聊天室与在线用户聊天,此外,服务器地址默认是本机地址,端口号默认是5000。用户名可以中文,英文字母或标点符号,服务器地址必须是符合点分十进制的合法地址,端口号可以修改,但服务器端程序内默认端口号也必须修改。该聊天室不需要注册,直接登录即可聊天,退出后,系统不保留用户任何信息。

若新登录用户与在线用户的用户名重名,则系统会自动修改用户名。格式为:用户名+“_客户端线程ID”。

3.1.2多人聊天

每个在线用户都可以发送聊天信息,服务器端会一直监听,并把每一个在线用户发送的聊天信

相关文档
最新文档