摘要在网路越来越发达的明天,人们对网路的依赖越来越多,越来越离不开网路,由此而形成的聊天工具越来越多,比如,美国的ICQ、国内腾讯公司开发的OICQ。基于Java网路编程的强悍功能linux修改文件名,本次结业设计使用Java编撰一个聊天系统。通常来说,聊天工具大多数由顾客端程序和服务器程序外加服务器端用于储存顾客数据的数据库组成,本系统采用顾客机/服务器构架模式通过Java提供的Socket类来连接客户机和服务器并使顾客机和服务器之间相互通信局域网聊天程序linux跨平台服务,因为聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQLServer2000完成并通过JDBC-ODBC桥访问数据库。本系统构建在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,顾客端与顾客端以及顾客端与服务器端之间通过Socket传送消息。使用JAVA语言编撰,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大提高了程序对服务器资源的借助。聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

局域网聊天程序linux跨平台服务_跨区域聊天_跨平台聊天软件

关键字:多线程;顾客机/服务器;JAVA;Socket;Eclipse;目录第一章需求剖析11.1可行性剖析11.1.1可行性剖析11.1.2系统功能需求11.1.3系统性能需求21.1.4系统运行需求21.2数据流图21.2.1顶楼数据流图21.2.2一层数据流图3第二章概要设计42.1系统实现原理42.2系统实现层次图:52.3各模块详尽功能52.3.1服务器端结构52.3.2顾客端结构6第三章详尽设计73.1系统流程图73.1.1系统总体流程图73.1.2系统顾客端流程图83.2编撰服务器端程序83.2.1问题陈述83.2.2解决方案93.3顾客端程序编撰133.3.1用户登入133.3.2搜集用户登入信息133.3.3聊天室14结论20参考文献21致谢22第一章需求剖析1.1可行性剖析1.1.1可行性剖析经济可行性:因为本系统的主要背景是结业课程设计,不重视直接的经济效益和其后的发展方向,只在重视自身水平和能力的提升,对自身的经济要求也不高红旗linux官网,只要有一台能运行Java软件的笔记本便可,所以不用考虑到经济问题。

跨区域聊天_跨平台聊天软件_局域网聊天程序linux跨平台服务

技术可行性:本系统的开发借助MicrosoftSQLServer2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。中学校园网的建设也为新系统服务器/顾客端的结构提供了硬件的支持。使用Java作为系统开发的开发环境,它提供建立的指令控制句子、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足顾客要求的系统,保证了代码的模块化要求,而代码模块化的提升,特别有利于之后对新系统的扩充与更改。运行可行性:本系统为一个大型的局域网聊天系统,所花费的资源十分的小,如今通常的笔记本无论是硬件还是软件都还能满足条件,因而,本系统在运行上是可行的。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的因而,它在技术上是可行的。1.1.2系统功能需求本系统主要通过顾客端,服务器端来彰显聊天系统的基本功能。(1)服务器端1.处理用户注册2.处理用户登入3.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容4.处理用户得到信息5.处理用户退出8.服务器踢人。9.保存服务器日志。10.保存用户聊天信息。(2)顾客端1.用户注册界面及结果2.用户登入界面及结果3.用户发送信息界面及结果4.用户得到信息界面及结果5.用户退出界面及结果1.1.3系统性能需求实用性:为局域网聊天提供便捷,有效进行作业管理。

操作简单:本系统应当适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和繁琐,因而要求系统的操作尽可能简单易行。技术先进:产品的系统设计和开发应紧跟随整个计算机发展时尚,采用当时最先进的设计思想,借助最新的开发技术和开发工具。使系统才能无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。安装使用简便:服务器端的安装简约明了,顾客机无需再装任何软件就可以直接注册登录聊天。适应性:应当能广泛应用于不同类型的企事业单位。系统采用模块化设计,用户可以按照自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。代码可读性好:文中的代码将尽可能简约,易懂。1.1.4系统运行需求运行环境:Windows9x、2000、xp、2003,Linux必要环境:JDK1.5以上硬件环境:CPU400MHz以上,显存64MB以上1.2数据流图1.2.1顶楼数据流图图2-1顶楼数据流图1.2.2一层数据流图.图2-2一层数据流图1.2.3二层数据流图图2-3系统二层数据流图第二章概要设计2.1系统实现原理聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的诱因,比如,普通网站须要对布局步入大量美化以及动漫设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。

局域网聊天程序linux跨平台服务_跨平台聊天软件_跨区域聊天

因而,在设计聊天系统的过程中,必需要考虑好以下几个设计要点:在Internet上的聊天程序通常都是以服务器提供服务端联接响应,使用者通过顾客端程序登入到服务器,就可以与登陆在同一服务器上的用户攀谈,这是一个面向联接的通讯过程。因而,程序要在TCP/IP环境下,实现服务器端和顾客端两部份程序。图3-1系统实现原理图2.2系统实现层次图:图3-2系统实现层次图2.3各模块详尽功能2.3.1服务器端结布光3-3服务器端结布光ServeFrame.java为服务器端程序界面,负责为服务器的启动提供界面服务。AppServer.java为服务器端启动界面,负责窃听服务器的状态局域网聊天程序linux跨平台服务,在线人数,最多在线人数,服务器名称,访问合同,服务器IP,服务器端口以及用户信息的管理,日志的保存。Connection.java是联接服务器和顾客端的桥梁,主要负责将顾客端的信息传送给服务器,并将服务器端的信息反馈给顾客端,即所谓的“三次握手”。也是Socket编程的重要部份。WordFilter.java负责将聊天过程中不合法的话语文件等过滤掉,返回合法内容。2.3.2顾客端结布光3-4顾客端结布光ChatClient.java为顾客端程序启动类,负责顾客端的启动和退出。

Login.java为顾客端程序登入界面,负责用户账号信息的验证与反馈。Register.java为顾客端程序注册界面,负责用户账号信息的注册验证与反馈。ChatRoom.java为顾客端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java亲昵合作。Windowclose为ChatRoom.java的内部类,负责窃听聊天室界面的操作,当用户退出时返回给服务器信息。Clock.java为顾客端程序的一个小程序,实现的一个石英钟功能。第三章详尽设计3.1系统流程图3.1.1系统总体流程图图4-1系统总体流程图3.1.2系统顾客端流程图图4-2顾客端流程图3.2编撰服务器端程序3.2.1问题陈述1.接受用户注册信息并保存在一个基于文件的对象型数据库。2.才能准许注册过的用户登入聊天界面并可以聊天。3.2.2才能接受私聊信息并发献给特定的用户。4.服务器运行在自定义的端口上1001.5.服务器监控用户列表和用户聊天信息(除私聊外)。6.服务器踢人,发送通知。7.服务器保存日志。3.2.2解决方案后台数据库设计基于服务器跨平台运行的设想,服务器的后台数据库使用了SQLServer2000。

跨区域聊天_局域网聊天程序linux跨平台服务_跨平台聊天软件

(1)login表:Login表(2)register表register表此表主要包含了用户账户基本信息。聊天系统采用用户名作为用户账号,并给每位用户生成一个惟一ID来做系统内部的用户标示。3.2.2用户注册1.去数据库读数据首先创建一个File文件类,载入“user.txt”,再用对象输入流ObjectInputStream将用户信息导出到系统中。2.顾客端恳求注册顾客端通过Register.java恳求注册,填写注册信息,并验证密码是否符合规定,是否两次输入一致,如不一致会提示重新输入,最后将恳求信息发送给服务器端。intflag=0;//是否重名判定标志Register_CustomerclientMessage=(Register_Customer)obj;FilefList=newFile(user.txt);if(fList.length()!=0)//判定是否是第一个注册用户{ObjectInputStreamobjInput=newObjectInputStream(newFileInputStream(fList));vList=(Vector)objInput.readObject();//判定是否有重名for(inti=0;ivList.size();i++){Register_Customerreg=(Register_Customer)vList.elementAt(i);if(reg.custName.equals(clientMessage.custName)){toClient.println(注册名重复,请另外选择);flag=1;break;}elseif(reg.custName.equals(所有人)){toClient.println(严禁使用此注册名,请另外选择);flag=1;break;3.服务器端响应服务器端得到注册恳求会将对象输入流转化为文件输出流,并反馈给顾客端。

顾客端得到注册信息后会在前台填写注册信息,之后创建文件输出流,再用对象输出流包装后写入本地文件将其持久化。最后关掉对象输出流和文件输入流。//将向量中的类写回文件FileOutputStreamfile=newFileOutputStream(fList);ObjectOutputStreamobjout=newObjectOutputStream(file);objout.writeObject(vList);4.给顾客端返回信息将用户注册成功或失败的信息用复印流包装Socket之后,输出给顾客端注册结果的详尽信息。//发送注册成功信息toClient.println(clientMessage.custName+注册成功);Datet=newDate();log(用户+clientMessage.custName+注册成功,+注册时间:+t.toLocaleString()+n);5.关掉Socket联接当以上的程序都正常运行后,须要关掉Socket联接,否则将会浪费服务器与顾客端之间的资源。用户登录1.去数据库读用户数据打开用户数据库文件“User.txt”,将用户数据对象集载入显存,以供下边的程序使用。

跨区域聊天_局域网聊天程序linux跨平台服务_跨平台聊天软件

//读文件FileInputStreamfile3=newFileInputStream(user.txt);ObjectInputStreamobjInput1=newObjectInputStream(file3);vList=(Vector)objInput1.readObject();2.验证用户名是否存在在对象数据库中查找是否有与登陆用户的用户名相同的记录,假如有继续验证,否则退出验证处理,返回“没有此用户”错误用户登录程序模块如下:if(reg.custName.equals(clientMessage2.custName)){find=1;if(!reg.custPassword.equals(clientMessage2.custPassword)){toClient.println(密码不正确);break;}else{//判定是否早已登陆intlogin_flag=0;for(inta=0;auserOnline.size();a++){String_custName=((Customer)userOnline.elementAt(a)).custName;if(clientMessage2.custName.equals(_custName)){login_flag=1;break;}}if(userOnline.size()=50){toClient.println(登陆人数过多,请稍候再试);break;用户退出1.接收退出信息当用户退出时,顾客端将会用基于Socket的对象输出流发送给服务器退出对象。2.在线列表中删掉用户用户退出后应当把用户从在线列表中删掉,否则用户退出用户还在在线列表中,这么该用户上次将会难以登陆。3.更新在线

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复