1、JAVA网络编程课程设计汇报局域网内多功效聊天室设计和实现院 系: 计算机科学和技术学院 班 级: 设 计 者: 学 号: 指导老师: 设计时间: 2月5日-2月13日 哈尔滨工业大学(威海)二一年二月哈尔滨工业大学(威海)课程设计任务书姓 名 学 号: 院(系): 计算机科学和技术学院专 业:信息安全 任务起止日期: 课程设计题目:局域网内多功效聊天室 问题叙述和分析: 网络编程目标就是指直接或间接地经过网络协议和其它计算机进行通讯。网络编程中有两个关键问题,一个是怎样正确定位网络上一台或多台主机,另一个就是找到主机后怎样可靠高效进行数据传输。在TCP/IP协议中IP层关键负责网络主机定位,
2、数据传输路由,由IP地址能够唯一地确定Internet上一台主机。而TCP层则提供面向应用可靠或非可靠数据传输机制,这是网络编程关键对象,通常不需要关心IP层是怎样处理数据。现在较为流行网络编程模型是用户机/服务器(C/S)结构。即通信双方一方作为服务器等候用户提出请求并给予响应。用户则在需要服务时向服务器提出申请。服务器通常作为守护进程一直运行,监听网络端口,一旦有用户请求,就会开启一个服务进程来响应该用户,同时自己继续监听服务端口,使以后用户也能立即得到服务。网络聊天是网络编程经典应用之一,编写网络聊天软件对于学习网络编程无疑有着很大帮助。本软件意在为同一局域网用户间提供便利局域网服务,局
3、域网用户能够经过此聊天软件在各终端相互发送聊天信息,同时能够快速传送文件,方便局域网用户间快速有效通信。 工作量:1. 程序总体整体框架界面设计2. 用户登录模块设计3. 用户列表模块设计4. 文本聊天模块设计5. 用户端及服务器端程序整合 工作计划安排:2月5日至6日:查阅资料、需求分析、设计程序整体框架功效及界面2月7日至10日:程序代码编写2月11日至13日:程序整合、撰写汇报一、引言本文围绕Java编程语言在网络编程方面具体应用,叙述了使用面向对象方法,对计算器程序进行需求分析、概要设计、具体设计,最终使用Java编程实现全过程。在编程我们使用java语言,是现在比较流行编程语言。在当
4、今这个网络时代,java语言在网络编程方面优势使得网络编程有了愈加好选择。Java语言最大特点是含有跨平台性,使其不受平台不一样影响,得到了广泛应用。二、需求分析2.1 开发背景:在网络越来越发达今天,大家对网络依靠越来越多,越来越离不开网络,由此而产生聊天工具越来越多,网络聊天时一类聊天系统发展日新月异,所以产生了制作一个局域网网络聊天工具;而且经过制作该程序还能愈加好学习网络软件编程知识.2.2 功效要求:i. 寻求服务器登录ii. 能够实现点对点单聊iii. 能够实现群聊iv. 能够实现文件传输v. 能够实现语音聊天vi. 能动态更新在线用户列表三、系统设计3.1 设计思想整个系统分为服
5、务器和用户端,服务器端维护各个用户端信息。用户端全部信息发往服务器端,再由服务器进行消息分析处理并做出对应控制,服务器端是全部信息中心。服务器端能够查看全部用户聊天统计,监控全部用户状态,发出用户上线、离线提醒等公告,用户端则提供接收公告功效。本课程设计根据系统具体功效要求,首先应用Socket编程创建用户端和服务器端,每多个用户端服务器端就会相因创建一个线程,它们之间经过这个连接来实现数据通信;然后在用户端设置一个监听器,用于监听服务器发来消息。并依据消息做出不一样动作。3.2系统功效该系统实现了用户之间点对点单人聊天,在线用户之间群聊。为了加强之间信息交流,还实现了用户之间文件传输、语音聊
6、天。在用户端和服务器端全部能够查看历史消息、保留消息、清空消息。为了监控用户之间状态,服务器还能够实现踢掉用户功效,同时用户时间文件传输信息全部会在服务器上显示。3.3系统架构1)选择传输控制协议TCP,使用JavaSocket编程机制,分别建立用户端和服务器端、语音传输使用是UDP控制协议;2)分别设计用户端和服务器端界面,并使用Java应用程序用户界面开发工具包Swing进行窗体界面布局,和实现部分窗口事件对应。3.4 模块设计3.4.1 服务器端:关键实现向各个用户端公布系统消息,接收来自用户端多种信息并分别处理。具体功效以下:连接控制:包含开启服务器、断开服务器和断开某个用户端连接;管
7、理作用:包含对参与聊天者昵称进行修改和向全部或某个用户端发送消息,维护一个IP地址和昵称所对应哈希表,方便定位到正确用户端,且有权强制修改用户昵称;刷新列表:在有用户登陆或离开时候实时更新列表,并将信息反馈到各个用户端;登陆信息:检验用户是否已登陆,如登录,发消息通知全部用户。同时刷新在线用户列表;聊天统计:能保留聊天统计,实现消息保留、清空和查看等功效;消息处理:解析用户端和服务器端消息交互类型,并做出对应处理,能够找到消息所对应接收端。3.4.2 用户端:关键实现向服务器端公布消息,而且对来自服务器消息做出对应响应。具体功效以下:连接功效:输入服务器地址,实现登录及断开功效登录设置:登录时
8、,发送消息使服务器端取得相关登录信息,昵称及IP地址统计到服务器端维持哈希表,断开后发送消息使IP地址及昵称从哈希表中删除;监听作用:实现对服务器发送过来消息进行监听功效;消息处理:接收由服务器端发送来信息,并做出对应响应;聊天统计:实现聊天统计保留、清空和查看等功效;消息处理:对应从服务器端接收到消息交互类型,实现用户和用户之间信息交互和文件交互;传输进度:使用进度条直观地表示用户和用户间文件交互进度。文件传输:实现用户端之间文件发送和文件接收功效。语音聊天: 实现用户端之间语音聊天功效。四、具体设计和实现4.1 服务器端4.1.1 服务器该段功效由Server.java文件中Server类
9、实现,具体实现过程以下:开启服务并接收连接:服务器任务首先是建立一个由IP地址到昵称映射哈希表,用于存放用户基础信息;开启服务器后,等候建立一个连接,然后用这个连接产生Socket创建一个Client,同时检验该用户是否已存在哈希表中,若以存在,则提醒该次连接请求失败,从而实现限制IP目标;若不存在,则将该IP地址及其昵称或默认昵称映射添加到哈希表中,接着服务器端向全部用户发送管理信息,提醒有新用户登录,而且将刷新后用户列表同时发送到各个用户端。关闭服务:服务器端遍历哈希表,关掉每一个用户对应Socket,以后,关闭服务Server。管理作用之发送消息: 服务器端解析由用户端发送请求,若控制字
10、以“SPECIAL”开头,则经过控制字后昵称从哈希表中找到对应用户,实现服务器端到用户端点对点消息交互;若不是以“SPECIAL”开头,则实现消息广播公布。管理作用之修改昵称:首先判定新昵称是否在哈希表中存在,若已存在则给犯错误提醒,不然经过该用户旧昵称在哈希表中查找到该用户,并用欲修改昵称替换掉原昵称;接着刷新服务器端用户列表显示,最终刷新用户端用户列表显示。管理作用之断开连接:若要断开某个用户端和服务器连接,首先向该用户发送被管理员请出系统信息,然后经过该用户昵称从哈希表中找到对应socket、service及IP地址等信息,再从每一项信息对应列表里删除该用户信息,最终关闭该用户socke
11、t,同时刷新服务器端和各个用户端用户列表显示。在服务其中,需要同时处理多个用户端请求,所以此处用到了多线程处理机制。在服务器程序里创建单个Server Socket,并调用accept()来等候一个新连接,一旦accept()返回,就取得结果取得socket,并用它新建一个线程,令其只为那个特定用户端服务,然后再调用accept(),等候下一次新连接请求。4.1.2 界面设计该段功效由ServerFrame.java文件中ServerFrame类实现,具体实现过程以下:窗口布局:服务器端窗口使用了BorderLayout事务管理器,把整个容器分成了五个区域:North、South、East、W
12、est和Center,每个区域放置一个面板,每个面板又分别使用不一样事务管理器放置其它组件,如按钮、标签、文本框等,各个组将组成了一个完整服务器端界面。 事件处理:经过Java授权事件模型,针对组件send、Button1Button8,经过addXXXListener(关键利用了addActionListener)方法注册监听器,而且实现ActionListener接口中actionPerformed方法,这么,当组件触发了对应类型事件后,此事件就会被传送给已注册监听器,事件监听器负责处理事件。至此,实现了窗口对以下多个事件响应:发送消息、保留消息、清空消息、查看历史消息、开启服务、关闭服务
13、、断开连接、修改昵称。 五、运行结果5.1 用户端登陆5.2 服务器实现其管理功效 向全部用户端发送消息 强制修改某个用户端昵称5.3 用户端群聊5.4 用户端和用户端间实现“私聊”5.5 用户端和用户端之间实现文件传输功效文件发送件传输完成六、结论和总结6.1 课程设计结论经过4.3运行结果,能够看出,该课程设计利用Java应用程序Socket编程实现了以下功效:使用Java多线程处理机制建立两个套接字分别作为服务器端和用户端。在服务器端实现了向各个用户端公布系统消息,接收来自用户端多种信息并分别处理功效,能够控制用户端连接和对用户管理作用,而且能够适时检测已登录用户连接状态且刷新在线用户列
14、表,更能够解析用户端和服务器端消息交互并做出对应处理。在用户端实现了向服务器端公布消息,而且对来自服务器消息做出对应响应,能够连接到特定服务器,设置自己昵称,而且能够监听服务器端发送过来消息并做出对应响应,愈加能够和其它用户进行广播或私聊,和实现文件传输,语音聊天等功效。由此,可见,此次课程设计完成了最初设计要求,即实现了类似P2PQQ聊天系统,有对应用户端和服务器端;服务器端能够统计目前在线用户列表,把用户列表发送给每一个在线用户,并实时刷新;任何一个用户全部能够和任意其它用户进行交互,即从在线用户列表中选择一个或一组其它用户经过服务器转发相互进行信息交互和文件交互。6.2 课程设计总结和体
15、会这个程序代码并不多,也不复杂,但程序编写中用到了JAVA中Swing组件,面板容器,事件处理,线程创建、同时,输入输出处理,内部类,异常处理,和网络通信知识,所以我还是很有收获。在这次课程设计中,我也用到了Socket 类和ServerSocket类,明白了它们是Java实现Socket通信关键工具。创建 ServerSocket对象就创建了一个监听服务,创建一个Socket对象就建立了一个Client和Srever间连接。明白了Java语言网络编程可靠性,平台无关性。总而言之经过此次试验,掌握了使用Java语言进行面向对象设计基础方法,提升利用面向对象知识处理实际问题能力。提升面向对象程序设计能力。七、参考文件1 Bruce EckelJava编程思想M北京:电子工业出版社,2 Cay S Horstmann,Gary CornellJava2关键技术M北京:机械工业出版社,3 陈刚Eclipse从入门到精通M北京:清华大学出版社,4 王森快易通Java程序设计M北京:北京大学出版社,5 叶至军由浅入深Java2自学手册M北京:人民邮电出版社,6 王森Java语言程序设计M北京:清华大学出版社,7 Art Taylor,Randy Layman,Brian BuegeJ2EE Java黑客大曝光:开发安全Java应用程序北京:清华大学出版社,