《java聊天小程序课程设计.docx》由会员分享,可在线阅读,更多相关《java聊天小程序课程设计.docx(40页珍藏版)》请在第壹文秘上搜索。
1、Java语言程序设计课程设计题U闲聊小程序(SOCket编程十多线程)学院商学院专业信息管理与信息系统班级信息Ul学号201152275118学生姓名张语轩指导老师余法红编写日期书目一、需求分析3二、系统概述3三、系统运行环境4四、功能需求描述5五、总体设计6六、系统模块结构图8七、程序模块设计(程序代码设计与分析、运行结果)9八、设计体会36九、参考文献37一、需求分析当今主流的闲聊工具有QQ,UC,MSNMeSSenger等,国内最热门的当属QQ,腾讯QQ(OICQ)是由深圳市腾讯计算机系统公司开发的,基于Internet的即时闲聊工具。您可以运用QQ和好友用户进行沟通,信息即时发送,即时
2、回红,收发与时、功能全面。此外QQ还具有BP机网上寻呼、闲聊室、传输文件、语音邮件、手机短讯服务等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动电话的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。是国内不行多得的中文网络寻呼机。QQ支持显示挚友在线信息.、即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win9598NT72000操作系统卜运行,是非常敏捷的网络寻呼工具。它会自动检查您是否已联网,假如您的电脑已连入Internet,可以搜寻网友、显示在线网友,可以依据QQ号、昵称、姓名、email地址等关键词来查找,找到后可加入到通讯录中。当您
3、的通讯录中的网友在线时,QQ中挚友的头像就会显示在线,依据提示就可以发送信息,假如对方登记寻呼机或开通JGSM手机短消息,即使离线人您也可与时将信息传递给您的好友。虽然以上这些软件是免费的,并且功能越来越强大。但是它们的唯一的不足就是必须要联网或者卜载到它们的服务端,要不然是没法脱离Intenet运用的Il为了能在一个没有连接到InIenel的局域网运用闲聊工具,那就必须要有服务器端。木系统就是包括服务器端与客户端,可以在局域网闲聊的一个I:具。二、系统概述我们实现的是局域网中的闲聊功能,运行服务程序后,服务器创建胜利,然后使服务器对某,个设定的端口处于监听状态,当有客户端恳求建立连接时,服务
4、器就可接受恳求,建立连接!这样服务器和客户端就可相互发送消息,实现闲聊功能!系统的功能要求:A.服务器端主要功能如卜丁1.在特定端口上进行侦听,等待客户端连接。2 .用户可以配置服务器端的侦听端口,默认端口为88883 .向已经连接到服务器端的用户发送系统消息。4 .统计在线人数。5 .当停止服务时,断开全部的用户连接。8 .客户端的主要功能如F:1 .连接到已经开启闲聊服务的服务器端。2 .用户可以配置要连接的服务器端的IP地址和端口号。3 .用户可以配置连接后显示的用户名。4 .当服务器端开启的话,用户可以随时登录和注销。5.用户可以向全部人或某一个人发送消息.0三、系统运行环境木程序基于
5、java和Eclipse开发环境,可以在一般的装有windows系统的主机上运行。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的1:具开发供应一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、ECIiPSe工具项目和ECIiPSe技术项目三个项目组成,详细包括四个部分组成一一EclipsePlatform,JDT,CDT和PDEJDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatfOrm则是一个开放的可扩展IDE,供应了个通用的开发平台。它供应建立块和构造并运行集成软件开发工具的基础.四、功能需求描述木系统针对局域网进行联机
6、闲聊。闲聊室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端须要登陆到服务器端才可以实现正常的闲聊功能。本系统主要实现如下功能:其界面主要采纳了java.awt包,java,swing包以与java.util包等。程序实现了闲聊室的基本功能,其中有:1、启动服务器。2、进入客户端界面。3,登录闲聊室。4、发送信息(实现按回乍键发送消息)。5、关闭服务器。服务器:在特定端口上进行侦听,等待客户端连接。令向已经连接到服务器端的用户发送系统消息。令当停止服务时,断开全部的用户连接。系统运行稔定、平安牢靠.令一台主机只能启动一个服务器。客户端:连接到已经开启闲聊服务的服务器
7、端。当服务器端开启后,用户可以发表闲聊信息。Q用户可以向全部人或某一个人发送消息。系统运行检定、平安牢鸵。五、总体设计闲聊系统的设计踉般网站设计有着很多不同的地方,般网站设计所考虑的因素,例如,一股网站须要对布局进入大量:美化以与动耐设计等等,而闲聊室只要供应满意访客双方干脆实时闲聊即可。因此,在设计闲聊系统的过程中,必须要考虑好以下几个设计要点:在Internet上的闲聊程序般都是以服务器供应服务端连接响应,运用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是个面对连接的通信过程。因此,程序要在TCP/IP环境卜,实现服务器端和客户端两部分程序。1 .首先通过继承JF
8、ranle类构造服务器界面。2 .设计客户端程序使其能够完成正常的通信功能3 .设计侦听程序,使其显示登录的ip地址端口号,以与用户昵称,通过侦听按钮可以调用客户端程序,实现闱聊功能。服务器”志数据通佶信息六、系统模块结构图主要功能框架如下图所示:七、程序模块设计(程序代码设计与分析、运行结果)代码:(1) ActionProcess.javapackagechat;importjava.awt.event.ActionEvent;importjava.io.DataInputStream:importjava.io.DataOutputStreani;importjava.io.IOExce
9、ption:.*;importjavax.swing.JOplionPane:publicclassActionProcessimplementsRunnableprivateChatClienlclient:Stringname=*;StringSendtoname=*;StringsenitoID;Stringfilename=;Stringfilepath=”;publicActionProcess(ChatClientclient)this.client=client;)publicvoidaction(ActionEvente)throwsExceptionfif(e.getSour
10、ce()=c1ient.connection)(try(if(clienl.socket.isConnected()()else(Stringaddr=JOptionPane.ShowInputDialog(请输入服务器IP:);InetAddressaddess=InetAddress.geIByName(addr):InetSocketAddressSOCketAddreSS=newInetSocketAddress(address,5555);client.socket,connect(SOCketAddreSS);client,in=newDalaInpulStream(c1ient.
11、socket,getInpuIStreamO):client,out=newDataOutputStream(client,socket.getOutputStreamO);name=client.inputName.getText();client,out.WriIeUTF(姓名为+name+”的挚友风尘仆仆地上线了.;client.listen.SetEnabled(true);client,filesend.SetEnabled(true);client.sendtoall.SetEnabled(true);client.Send100ne.SeIEnabIed(IrUe);client
12、.emote.SetEnabled(true):if(!(client,thread.isAlive()client.thread=newThread(this);client,thread,start():)catch(IOExceptionee)if(e.getSource()=client.listen)(tryname=client.inputName.getTextO;client,out.WriIeUTF(姓名为+name+”的挚友正在监听中.;FilesendServerfiIesendserver-newfiIesendServerO;filesendserver,fiIere
13、ceiveO;catch(Exceptionee)ee.PrintStackTraceO;)if(e.getSource()=client.filesend)if(client.socket.isConnected()try(filesendClientfiIesendclient=newfiIesendClientO;filesendclient,fiIesendO;client.out.WriteUTF(胜利发送文件!”);calch(Exceptionee)if(e.getSource()=c1ient.exit)(il(client.socket.isConnected()try(na
14、me=client.inputName.getTextO;client.out.WriteUTF(姓名为+name+”的挚友黯然F线了.;client,oul.flush();client,out.closeO;client,socket,close();catch(IOExceptionel)el.PrintStackTraceO;System,exit(O);)Stringem=client.emote.getSelectedlten().toString();if(em.equals(表情)*Hem=;elseem+=若;)if(e.getSource()=c1ient.serdtoall)(if(client.socket.isConnected()name=client.inputName.getText();Strings=client.inputContent.getText():if(s!=null)client.out.WriteUTF(name+em-”对大家说:+s):client,out.flush():client.inputContent.SetTeXt();)catch(IOExceptionel)if(e.getSorceO=c1lent,sen