




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上JISHOUUNIVERSITY专业课课程论文题 目:局域网内的多功能聊天室的设计与实现作 者:学 号:所属学院:信息科学与工程学院专业年级:总 评 分:完成时间:吉首大学信息科学与工程学院局域网内的多功能聊天室的设计与实现(吉首大学信息科学与工程学院,湖南 吉首 )摘 要在计算机技术飞速发展的今天,随着Internet的普及和发展,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见、最直接的网上交流的方式。本论文主要研究一个以网络交友为主,为广大用户提供一个借助网络进行人际交往的信息平台。本文所设计的局域网聊天系统是基于开放的WEB服务器应用程序开发
2、设计的,其主要特征是能动态完成信息的传递且具有高效的交互性,有效的处理客户请求且具有更简单、更方便的数据库访问方法,易于维护和更新。这种技术程序由JAVA、HTML、数据库和脚本语言组合而成。主要功能模块包括:用户登录、注册部分;编写和显示聊天记录部分;管理员管理聊天室的管理部分。聊天系统编写和显示聊天记录部分界面友好,提供动作、表情、公聊或私聊等操作;管理部分可以删除不守规矩的注册用户、踢出在线用户以及删除某些不合时宜的聊天记录等、根据数据库需求分析,在ACCESS中定义3个表:用user表来存放注册用户信息、用activetable表来存放当前在线用户信息以及用message表来存放聊天记
3、录。本系统相比较其他信息交流平台具有开发方便、快捷,占用资源少,维护方便等优点。【关键词】Java,数据库,脚本语言,聊天系专心-专注-专业LAN of multi-function chat room design and ImplementationRaotao (College of Information Science and Engineering,Jishou University,Jishou,Hunan )AbstractThe rapid development of computer technology today, with the popularity and de
4、velopment of Internet, people's work and life has become increasingly inseparable from the support of the information network, and the chat room is one of the most common, the most direct online communication mode.In this thesis, a network of friends, for the vast number of users with a network
5、of have the aid of interpersonal information platform.The design of the LAN chat system is based on an open WEB server application development and design, its main characteristic is to complete the information transmission dynamically with high interactivity, effective customer request and has a mor
6、e simple, more convenient database accessing method, easy maintenance and update.The technical program by JAVA, HTML, database and script language and combination.The main function modules include: user login, registration section; write and display chat recording part; the administrator manage the
7、chat room management section.Chat system to prepare and display chat interface friendly, with action, expression, the public chat or operation; management can remove the unruly registered user, play online user and delete certain be inopportune or inappropriate chat records, according to the databas
8、e needs analysis, defined in ACCESS 3: user table table for registered users of information, using activetable table to store the current online user information and the use of message table to store the chat record.This system is compared with other information exchange platform with the developmen
9、t of convenient, fast, less resource occupation, easy maintenance and other advantages.Key words:JAVA; data capture; information analysis ; Winpcap;Jpcap 目 录第一章引言1.1课题背景及意义在网络越来越发达的今天,人们对网络的依赖越来越多,各种网络应用层出不穷,网络编程越来越受大广大程序员的重视。网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找
10、到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。网络聊天是网络编程的典型应用
11、之一,编写网络聊天软件对于学习网络编程无疑有着很大的帮助。本小组编写本软件,旨在通过软件的编写与实现,来提高对网络编程的理解和掌握。1.2课题研究现状网络数据捕获技术是获取信息的关键技术,它通过监听技术,过滤技术获取原始数据,根据TCP/IP分层理论进行层层拆解,提取相关协议中的信息。本设计主要通过使用Java编写出了一款简单的软件对数据包信息进行捕获,捕获出所需要的敏感信息,并且将捕获出来的信息保存起来。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,
12、JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景1。 1.3研究内容网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则
13、提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。网络聊天是网络编程的典型应用之一,编写网络聊天软件对于学习网络编程无疑有着很大的帮助。本软件旨在为同一局域网用户间提供便利的局域网服务,局域网用户可以通过此聊天软件在各终端相互发送聊天信息,同时可
14、以快速传送文件,方便局域网用户间的快速有效通信。1.4论文组织方式 首先,本论文从目前网络的安全现状开始,详细研究了本课题的背景以及意义,由于目前我国已经进入了网络时代,需要使用自己的网络聊天信息安全系统来保护自己的网络聊天信息系统,尤其是对于秘密性的信息,必须将网络安全和信息安全放在非常重要的地位。其次,在对本论文的背景有所了解的情况下,对本课题所必须的关键技术进行了介绍,包括java的概述,套接字,三次握手等。最后,在对所必须得基础知识有所了解的情况下,按照各模块的功能,分别详细介绍了各个功能的实现过程。第二章关键技术2.1 java概述JAVA语言有下面一些特点:简单、面向对象、分布式、
15、解释执行、鲁棒、 安全、体系结构中立、可移植、高性能、多线程以及动态性。丰富的类库JAVA提供了大量的类以满足网络化、多线程、面向对象系统的需要。语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以用它简单地实现JAVA程序的运行平台。实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。输入输出包用统一的“流”模型来实现所有格式的I/O,包括文件系统、网络、输入低级网络包用于实现Socket编程。抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件, 包括窗口、菜单、滚动条、对话框等,使得JAVA可以移植到不同平台的机器。网络包支持Internet的TCP/IP协议
16、,提供了与Internet的接口。它支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。JAVA和C、C+对于变量声明、参数传递、操作符、流控制等使用了相同的传统,使得熟悉C、C+的程序员能很方便地进行编程。同时, JAVA为了实现其简单、鲁棒、安全等特性,也摒弃了C和C+中许多不合理的内容。2.2套接字2.2.1 Socket简介Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端
17、的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个Socket,通过读写和客户端通信。2.2.2 Socket工作过程Socket程序的工作过程:1.建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。2.数据通信:利用虚拟连接通道传送数据信息进行通信。3.关闭:通信结束时,再将所建的虚拟连接拆除。2.3
18、 TCP三次握手第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧。第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。第三此握手:源端机收到含有两次初始序列号的应答后,再向目的主机发送一个带有两次连接的序列号的确认。具体过程如下:图2.1 三次握手协议第三章需求分析3.1功能需求做为一个局域网内的即时聊天程序,除了基本的聊天功能,文件传输也是经常用到的功能。本软件需具有以下几个功能:1.用户登录设立一个服务器,实现多用户即时通讯;用户在登录的同时需输入一些个性化的信息,以便于各用户之前的识别。2.文本聊天聊天室功能,即所谓的群聊,
19、聊天内容所有人可见;保密聊天功能,即所谓的私聊,聊天内容仅聊天双方可见;用户可对字体进行设置。3.文件转输多线程,收发可同时进行。3.2性能要求3.2.1处理数据能力3.2.2时间特性 响应时间:所有的发送操作响应时间一般不超过1秒,大量的信息发送,呈现应该在5秒内显示或者提示相关出错信息。 更新处理时间:所有提交数据一般在3秒内相应。 3.2.3 数据库需求聊天记录较多,在需要时能即时存取。相关配置信息,需要时能即时读取。3.2.4 设计约束3.2.5 其他标准的约束 硬件约束 奔腾4处理器及以上内存:256M以需求规格说明书 硬盘:50M以上剩余空间 属性3.2
20、.5.2.1 可用性 .2 可靠性 .3 效率.4 安全性 .5 可维护性要求类的构建符合高内聚低耦合度的要求 3.2.6 外部接口需求 用户接口用户界面:采用Windows的通用图形界面,对用户友好,且必须对鼠标键盘提供支持,界面设计应遵循:1. 尽量保持一致性:界面规范应遵循Winows软件界面的规范 2. 设计完整的对话过程:系统的每一次对话都应该有明确的次序:开始、中间处理过程、结束。3. 提供简单的错误处理机制 4. 提供信息反馈:用多种信息提示用户当前软件运行状态,软件界面元件的功能。5. 操作可逆:其动作可以
21、是单个的操作,或者是一个相对独立的操作序列。 6. 设计良好的联机帮助 : 软件接口 本节指定需使用的其他软件产品(如:数据管理系统、操作系统、数学软件包),以及同其他应用系统之间的接口。如果已有完整的接口文件,需在本节指明。说明内容包括: a) 接口标识;b) 功能描述; c) 数据流程和控制流程的方向;d) 数据格式、容量;e) 接口类型(如手动或自动);f) 接口数据中断的优先级别;g) 中断响应时间; h) 异常处理等。 对每一个所需的软件产品,需提供名称、缩写、规格说明、版本号、来源等内容。3.2.7 通信接口 本产品用户各终端和服务器属于一个局域网,网内采用TCP/I
22、P或UDP协。第四章概要设计4.1体系结构设计4.1.1 复审数据流、控制流图软件体系结构软件程序结构图图4.2 结构图系统配置子系统图4.3 系统配置子系统消息记录子系统图4.4 消息记录子系统4.2模块设计 4.2.1 用户扫描系统模块图4.5用户扫描系统模块图4.6用户扫描系统模块4.2.2 在线交流系统模块图4.7在线交流系统模块4.2.3 系统配置系统 上线提示模块图4.8上线提示模块4.2.4 设置个人资料模块图4.9设置个人资料模块4.2.5 系统屏蔽模块图4.10系统屏蔽模块第五章详细设计5.1用户登录模
23、块只列出程序界面以及与服务器端通讯部分的代码:图5.1用户登录模块客户端 class Connect extends JFrame implements ActionListener, ItemListener, KeyListenerpublic void link() throws Exception / 连接服务器hostName = hostText.getText().trim();port = Integer.parseInt(portText.getText();client = new Socket(hostName, port);/ 创建一个流套接字并将其连接到指定 IP 地
24、址的指定端口号。in = new BufferedReader(new InputStreamReader(client.getInputStream();out = new PrintWriter(client.getOutputStream();out.println(nameText.getText() + "&" + sex);out.flush();服务器端:public static void addConnection(Socket s, ClientProc cp)if (connections = null)connections = new Ve
25、ctor<Socket>();connections.addElement(s);if (clients = null)clients = new Vector<ClientProc>();clients.addElement(cp);public static void deleteConnection(Socket s, ClientProc cp)throws IOExceptionif (connections != null)connections.removeElement(s);s.close();if (clients != null)clients.r
26、emoveElement(cp);public static Vector getClients()return clients;5.2用户列表模块只列出程序界面以及与服务器端通讯部分的代码:客户端:public void valueChanged(ListSelectionEvent e)/ 监听下拉列表的显示内容if (e.getSource() = peopleList)tryString select = (String) peopleList.getSelectedValue();if (select != null) / 确保选择非空String userInfo = select
27、.split("");String name = userInfo0.trim(); / 提取名字if (!name.equals(chf.myName) / 不能添加自己int count = chf.perponsComboBox.getItemCount();for (int i = 0; i < count; i+)chf.perponsComboBox.setSelectedIndex(i);/ 选择第i项String strName = (String) chf.perponsComboBox.getSelectedItem();if (name.equa
28、ls(strName) / 如果已经在列表中,就复合框中选中,所以要确保没有重名return;/ 如果没有添加,就会执行下面语句 添加chf.perponsComboBox.addItem(name); catch (Exception ee)System.out.println("发生错误 在valueChanged " + ee);public void actionPerformed(ActionEvent e)if (e.getSource() = refurbishButton) / 如果监听到要刷新列表trylistModel.clear(); / 清空列表ch
29、f.out.println("refurbish"); / 发送刷新请求到服务器chf.out.flush(); catch (Exception ee)服务器端:public String getName()return name;public String getSex()return sex;public Socket getSocket()return s;private void updateList()/ 更新用户列表(即发送当前在聊天室的用户到新来的用户列表中)Vector cs = ChatServer.getClients();if (cs != null
30、)for (Enumeration e = cs.elements(); e.hasMoreElements();)ClientProc cp = (ClientProc) e.nextElement();String exist_name = cp.getName();String exit_sex = cp.getSex();/* * for (int i = 0;i<cs.size() ;i+ ) String exist_name * =(ClientProc)cs.elementAt(i).getName(); String exit_sex = * (ClientProc)c
31、s.elementAt(i).getSex(); */System.out.println("old" + "&" + exist_name + "&" + exit_sex);out.println("old" + "&" + exist_name + "&" + exit_sex);out.flush();5.3文本聊天模块只列出程序界面以及与服务器端通讯部分的代码:图5.2 文本聊天模块客户端:if (e.getSource() = se
32、ntButton)/ 如果监听到发送信息按钮被点击trymywords = inMsgField.getText();if (mywords.trim().length() != 0) / 不能发送空消息也不能都发空格if (withWho.equals("所有人")outmsg = mywords;/ 发送到服务器out.println(outmsg);out.flush();/ 显示到我的频道里面insert(myMsgArea, myName + ":" + mywords);/myMsgArea.setCaretPosition(myMsgAre
33、a.getText().length(/ ); else / 对某个人交谈outmsg = "withWho" + "&" + "privateFalse" + "&"+ withWho + "&" + mywords;if (privateTalkFlag)outmsg = "withWho" + "&" + "privateTure" + "&"+ withWho + &q
34、uot;&" + mywords;insert(myMsgArea, "您对" + withWho + "说: "+ mywords);/ myMsgArea.setCaretPosition(myMsgArea.getText()./ length(); elseinsert(myMsgArea, myName + " 对" + withWho + "说: "+ mywords);/myMsgArea.setCaretPosition(myMsgArea.getText().length(/ )
35、;/ 发送到服务器out.println(outmsg);out.flush(); catch (Exception ee)ee.printStackTrace();insert(myMsgArea, "与服务器连接中断,请重新登录!");/ myMsgArea.setCaretPosition(myMsgArea.getText().length(); finallyinMsgField.setText(""); / 清空输入框服务器端:/* * * 发送信息给所有的人*/public static void sendAll(String s)if (
36、connections != null)for (Enumeration e = connections.elements(); / Enumeration过时的接口,/ 可以用for each循环e.hasMoreElements();)tryPrintWriter pw = new PrintWriter(Socket) e.nextElement().getOutputStream();pw.println(s);pw.flush(); catch (IOException ex)ex.printStackTrace();System.out.println(s);/* 发送信息给单独一
37、个人*/public static boolean sendOne(String name, String msg)if (clients != null)for (Enumeration e = clients.elements(); e.hasMoreElements();)ClientProc cp = (ClientProc) e.nextElement();if (cp.getName().equals(name)tryPrintWriter pw = new PrintWriter(cp.getSocket().getOutputStream();pw.println(msg);pw.flush();return true; / 返回值为真,找到了这个人可以进行聊天 catch (IOException ioe)ioe.printStackTrace();return false;/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消除消防隐患服务合同
- 小麦收割合同
- 石油高效利用工程监理企业ESG实践与创新战略研究报告
- 碲锌镉靶企业数字化转型与智慧升级战略研究报告
- 多功能一体机企业县域市场拓展与下沉战略研究报告
- 显示板及类似装置企业县域市场拓展与下沉战略研究报告
- 卡盘企业县域市场拓展与下沉战略研究报告
- 石油高效利用工程管理企业县域市场拓展与下沉战略研究报告
- 自动络筒机战略市场规划报告
- 广告服务战略市场规划报告
- 4.4 歌曲 《凤阳花鼓》说课课件(26张内嵌视频)
- 2024年面向双高电力系统发展需求的柔性直流输电技术报告
- 发酵类制药工业水污染物间接排放标准DB41 758-2012
- 2025年中考历史复习专项训练:中国近代史材料题40题(原卷版)
- 2024年手工木工职业技能竞赛理论考试题库-下(多选、判断题)
- 2024上半年浙江杭州市临平区机关事业单位编外用工招聘61人历年高频500题难、易错点模拟试题附带答案详解
- 有限空间作业气体检测记录表
- 2024至2030年中国汽车铝轮毂行业市场现状调研与发展趋势分析报告
- 八年级语文上册 第一单元 第3课《乡愁 余光中》教案 冀教版
- 2024中考英语必考1600词汇分类速记表
- 江苏泰州市泰兴经济开发区国有企业招聘笔试题库2024
评论
0/150
提交评论