当前位置:文档之家› JAVA聊天室实验报告

JAVA聊天室实验报告

JA V A聊天室实验报告姓名:马琳越班级:131114学号:13111368日期:2014年4月23日目录目录 (2)JAVA程序课程设计任务书 (3)摘要 (4)第1章引言 (5)第2章聊天室系统的设计 (7)第3章界面设计 (11)第4章总结.........................................................................................错误!未定义书签。

Java聊天室的设计任务书1.主要内容用JAV A实现基于C/S模式的聊天室系统。

聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。

2.具体要求A.服务器端主要功能(1).在特定端口上进行侦听,等待客户端连接。

(2).用户可以配置服务器端的侦听端口,默认端口为8888。

(3).向已经连接到服务器端的用户发送系统消息。

B.客户端主要功能(1).连接到已经开启聊天服务的服务器端。

(2).用户可以配置要连接的服务器端的IP地址和端口号。

(3).用户可以配置连接后显示的用户名。

(4).用户可以向所有人或某一个人发送消息。

3.主要参考文献及运用工具(1)Bruce Eckel著Thinking in Java,李刚著疯狂Java讲义(2)使用技术:Java使用开发工具:Eclipse摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。

基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。

一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。

本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。

系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。

使用JAVA语言编写,开发工具采用Eclipse。

服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。

大大增强了程序对服务器资源的利用。

聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

第1章引言1.1背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ,网络聊天时一类的聊天系统的发展日新月异,这些软件唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱离Intenet使用的。

此次大作业既是利用网络编程写一个聊天室,以期通过制作该程序能更好的学习网络软件编程知识,此聊天室为能在一个没有连接到Intenet的局域网使用聊天工具。

网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。

网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。

在TCP/IP 协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。

而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。

目前较为流行的网络编程模型是客户机/服务器(C/S)结构。

即通信双方一方作为服务器等待客户提出请求并予以响应。

客户则在需要服务时向服务器提出申请。

服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。

1.2课程设计要求利用套接字socket()设计一个聊天程序,该程序基于C/S模式,,运行服务程序后,服务器创建成功,然后使服务器对某一个设定的端口处于监听状态,当有客户端请求建立连接时,服务器就可接受请求,建立连接!这样服务器和客户端就可相互发送消息,实现聊天功能!1.3项目功能特点1.基本功能实现服务器监听,客户端连接,可进行多人会话的C/S聊天室。

2.服务器特点(1).在特定端口上进行侦听,等待客户端连接。

(2).用户可以配置服务器端的侦听端口,默认端口为8888。

(3).向已经连接到服务器端的用户发送系统消息。

3.客户端特点(1).连接到已经开启聊天服务的服务器端。

(2).用户可以配置要连接的服务器端的IP地址和端口号。

(3).用户可以配置连接后显示的用户名。

(4).用户可以向所有人或某一个人发送消息。

1.4功能实现(1).注册功能(2).登陆验证功能功能(3).客户通过服务器转发,实现聊天功能.(4).实现公聊功能。

(5).易用,美观的图形界面,实现系统托盘.第2章聊天室系统的设计2.1系统需求分析聊天室的设计目标:通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Eclipse等开发工具的运用,拓宽常用类库的应用,用JAV A实现基于C/S模式的聊天室系统。

需要实现以下一些基本功能:A.消息发送:用户可以发送消息给聊天室里所有的用户。

B.消息接受:用户可以接收到其他用户发送给他的消息。

C.聊天室管理功能:聊天室管理员可以启动或者关闭聊天室服务。

2.2系统开发及运行环境硬件平台:❑CPU:Pentium2.8GHz以上。

❑内存:256MB以上。

软件平台:❑操作系统:Windows XP。

❑运行环境:JDK Version1.7Eclipse2.3系统主要功能要求聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。

本系统主要实现如下功能:服务器:❑在特定端口上进行侦听,等待客户端连接。

❑用户可以配置服务器端的侦听端口,默认端口为8888。

❑向已经连接到服务器端的用户发送系统消息。

❑一台主机只能启动一个服务器。

客户端:❑连接到已经开启聊天服务的服务器端。

❑用户可以配置要连接的服务器端的IP地址和端口号。

❑用户可以配置连接后显示的用户名。

❑当服务器端开启后,用户可以随时登录和注册。

❑用户可以向所有人发送消息。

2.4基本设计概念和处理流程本系统运行用JAVA开发,采用C\S结构,系统分为客服端和服务端两大模块,使用Socket类建立套接字实现客服端和服务端得通讯。

(1)系统主体的处理流程:发送请求客服端服务端返回应答(2)总体结构服务端网络聊天室客服端(3)功能分配客户端和服务器模块功能树图客户端:显示在线用户客服端接收并显示消息服务端:处理用户注册,登录申请服务端转发用户消息服务器管理2.4设计原理通信方式1)服务器建立一个TCP监听端口,等待客户端连接。

2)客户连接服务器,服务器生成一个Socket服务该用户。

3)服务器接收来自客户端的聊天信息,然后遍历转发给所有在线用户。

2.5运行方式具体软件的运行模块组合为客户端窗口的运行环境,服务器无窗口环境,服务器与客户端在运行过程中传输字符,交换信息,处理数据。

第3章界面设计(1)注册登陆界面(2)注册成功界面图(3)重复注册界面图(3)登陆界面图登陆成功既跳出兑话框,服务器端将显示“登陆成功”以及“a client connected”(4)客户端界面图(5)多人群聊界面图。

第4章总结1.实验中遇到的问题以及解决整个程序的框架写出来后,准备启动多个客户端才发现此时不能同时启动多个客户端,后来阅读到课本“多线程”那一章,用多线程解决了此问题。

后来,在客户端以及服务器端的交互过程中,不停的出现着各种异常以及问题,比方说IOException,EOFException,Socket Closed,在不断的调试程序以及在网上找寻的视频学习的过程中才解决这些问题。

后来在写登陆注册时,也会不断的出现问题,不是可以重复注册就是注册了点登陆却不能响应,诸如此类的很多问题,自己调试了许久也并没有解决问题,最后找同学帮忙修改了此段程序。

2.实验总结这次的大作业应该是我接触到的第一个项目,项目虽小,却能暴露出很多问题。

项目伊始,我在网上找了马士兵的java讲课视频来看,为自己做项目找到了一个大体的思路,但是当自己着手做的时候,又会暴露很多问题,其中不乏有基础知识没有掌握牢固的部分,所以说,此次的java大作业也是一个巩固所学知识的很好的机会。

而且,通过这次大作业,我认识到实战一个项目所得到的远比整天抱着书本看知识更能长知识,这个项目使我在运用GUI、线程、java网络和流等的方面更加熟练,对于细小的知识点也更加巩固。

而且,通过这个项目,我更深深的体会到:好的程序不是写出来的,而是改出来的。

此次编程,自己事先罗列了一个提纲:该实现什么功能,要实现此功能首先该实现什么。

就这样一步步剖析到最底层一个很简单的东西,而自己的编码就从这个入手,然后一步步扩充,并不断调试,使程序更加健壮。

通过这次作业我已经认识到了实战的重要性,写这份作业的这段时间是忙碌并且充实的,之后,我也会每天都写一些代码来锻炼自己。

本次实验运用了Eclipse,它确实很智能,很方便,但平时的训练中,我依旧会使用记事本来编码,这样,我才回更扎实的掌握java,我相信一段时间以后,自己的积淀已经够深,自己也有资格去借助Eclipse去完成更多的项目。

相关主题