Java实现的聊天系统实验报告_第1页
Java实现的聊天系统实验报告_第2页
Java实现的聊天系统实验报告_第3页
Java实现的聊天系统实验报告_第4页
Java实现的聊天系统实验报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java实现的聊天系统实验报告第一章 系统概述 本实验完成的聊天系统是一个c/s体系结构网络程序的实例,其操作原理为:服务器程序会等待客户端联机,当有用户要求加入聊天室且联机成功后,便可开始发送消息,这些消息将会以广播的方式传送给所有其他在聊天室中的成员。第二章 系统框架21 网络架构以socket通信机制实现聊天程序。允许多个客户机连接,并设置广播、私语等多种聊天方式。服务器用serversocket “侦听”进入的连接;客户机用socket初始一次连接。一旦客户(程序)申请建立一个套接字连接,serversocket就会返回(通过accept()方法)一个对应的服务器端套接字,以便进行直接

2、通信。1服务器通过serverlisten这个线程来监听、负责响应客户端的的各种信息,包括用户的登陆,用户的注册,各个客户端的信息相互转发。2客户端负责为用户提供登陆界面,将信息发送至服务器,通过clientreceive类负责与服务器其它客户端的通信工作。22 系统架构本实验完成的聊天系统是一个c/s体系结构网络程序的实例,用户可以在客户端注册,登陆,与在线好友及私聊或群聊,能够查看在线用户,查看好友列表,修改个人信息!23 模块功能说明 服务器程序(1)能等待用户联机,并建立和客户端通信的i/o通道;(2) 当有用户要求加入聊天室,先验证其帐号和密码的合法性,验证成功后允许联机并将登陆信息

3、写入日志log表;(3)能将用户发来的信息存入数据库保存,以便查询统计,同时能将消息广播给所有聊天室成员;(4)能清除不正常终端的联机;(5)系统管理:能设置加入聊天系统的人数限制,能查看用户登陆信息和聊天信息。客户端程序(1)提供用户的注册、登陆及连接服务器时ip,port的修改(2)用户登陆后,能修改注册信息以及查看在线用户,好友列表(3)能够与其他客户端及服务端进行各种信息转发第三章 系统详细设计说明各模块的功能,并列出uml类图,以及类的说明系统用例图uml类图(服务端)(客户端)类的说明参考如下:一、servergui类1、servergui类简介服务端的一个主窗口类,服务端的mai

4、n()方法在这个类里,是首先启动的,所有服务端的功能都在这个类里调用,可以通过这个类设置端口,启动聊天服务,停止服务,向所有用户或个别用户发送消息,还设置客户端最大连接数,查看用户信息,是否联机情况和用户聊天记录等2、变量说明数据类型变量名变量作用databasemanagerdbm操作数据库的类jbuttonexitbutton退出按钮jmenuitemexitmenuitem退出菜单intheight窗口的高jmenuhelpmenu帮助菜单jmenuitemhelpmenuitem帮助子菜单jtextfieldinputfield聊天信息输入框jlabellabel_1为了排版的标签jl

5、abellabel_2为了排版的标签jlabellabel_3为了排版的标签jlabellabel_4为了排版的标签serverlistenlistenthread服务端的侦听类jtextareamessagearea显示全部聊天信息jscrollpanemessagescrollpane滚动条jpanelpanel放置组件jpanelpanel2放置组件jpanelpanel3放置组件jbuttonportbutton端口设置jmenuitemportmenuitem端口设置jmenuitemselectuserlistmenuitem查看用户列表jbuttonsendbutton发送按钮j

6、labelsendmsglab显示发送消息标签jlabelsendtolab显示发送至标签jmenuservermenu服务菜单serversocketserversocket此类实现服务器套接字jmenuitemsetchatnummenuitem设置(限制)聊天人数jbuttonstartbutton启动服务jmenuitemstartmenuitem启动服务intstartx窗口左上角的x坐标intstarty窗口左上角的y坐标jtoolbarstatusbar创建状态栏jtextfieldstatusbarlab显示状态栏信息jbuttonstopbutton停止服务jmenuitem

7、stopmenuitem停止服务jmenusystemmagmenu系统管理菜单jtoolbartoolbar创建工具栏jcomboboxusercombobox用户列表下拉框userlinklistuserlinklist用户链表stringusername用户名intwidth窗口的宽3、构造方法说明方法名及参数构造方法作用public servergui()初始化服务端窗口4、方法说明返回值类型方法名及参数方法作用public void actionperformed(actionevent e)监听事件的实现方法public void sendmsgtoall(string msg)向

8、所有人发送消息public void sendstoptoall()向所有人发送服务器关闭的消息public void sendsystemmessage()向客户端用户发送消息public void setloc(container jf)设置窗口的位置public void startservice()启动服务端public void stopservice()关闭服务端方法详细说明(1) actionperformed方法public void actionperformed(actionevent e)parameters:动作事件actionevent e方法体:首先判断传进来的参数

9、,再根据参数类型执行相应的处理动作事件 (2) sendmsgtoall方法public void sendmsgtoall(string msg)parameters:聊天消息 string msg(3) sendstoptoall方法public void sendstoptoall()向所有人发送服务器关闭的消息(4) sendsystemmessage方法public void sendsystemmessage() 向客户端用户发送消息(5) setloc方法public void setloc(container jf)parameters:容器 container jf设置窗口的

10、位置(6) startservice方法public void startservice()启动服务端(7) stopservice方法public void stopservice()关闭服务端二、userlist类1、userlist类简介可能通过该类查看所有用户的信息,可以删除用户,可以看到用户聊天信息。 2、变量说明数据类型变量名变量作用jbuttonbuttoncancer退出jbuttonbuttondelete删除containercontainer容器databasemanagerdbm操作数据库的类gridbaglayoutgridbagl布局类jscrollpanemess

11、agescrollpane滚动条jpanelpanelbutton放置按钮jpanelpanelcontainer放置组件resultsetrst得到从数据库返回的数据jtextareashowmessage显示聊天记录stringstr写sql语句jtabletabletable组件,显示用户记录3、构造方法说明方法名及参数构造方法作用public userlist(jframe frame)初始化用户列表窗口4、方法说明返回值类型方法名及参数方法作用public void actionperformed(actionevent e)监听事件的实现方法private void addcont

12、ainer(jpanel panel,jcomponent component,gridbagconstraints gbc,int gridx, int gridy, int gridwidth,int gridheight)该方法为了把组件加到一个容器里,按照指定的布局坐标方法详细说明(1) actionperformed方法public void actionperformed(actionevent e)parameters:动作事件actionevent e方法体:首先判断传进来的参数,再根据参数类型执行相应的处理动作事件 (2) addcontainer方法public void

13、addcontainer(jpanel panel,jcomponent component,gridbagconstraints gbc,int gridx, int gridy, int gridwidth,int gridheight)parameters:容器jpanel panel,组件jcomponent component,布局容器gridbagconstraints gbc,x坐标int gridx,y坐标 int gridy, 宽度int gridwidth,高度int gridheight该方法为了把组件加到一个容器里,按照指定的布局坐标三、userlinklist类1、u

14、serlinklist类简介用户链表类,可以通过该类增加,删除用户,返回用户数,根据索引查找用户等2、变量说明数据类型变量名变量作用intcount存用户数nodepointer用户链表的结点类对象noderoot用户链表的结点类对象3、构造方法说明方法名及参数构造方法作用public userlinklist()构造用户链表4、方法说明返回值类型方法名及参数方法作用public void adduser(node n)添加用户public void deluser(node n)删除用户public node finduser(int index)根据索引查找用户public node fi

15、nduser(string username)根据用户名查找用户public int getcount()返回用户数方法详细说明(1) adduser方法public void adduser(node n)parameters:用户链表的结点类 node n添加用户 (2) deluser方法public void deluser(node n)parameters:用户链表的结点类 node n删除用户(3) finduser方法public node finduser(int index)parameters: 索引 int index returns: 用户链表的结点类(4) find

16、user方法public node finduser(string username)parameters:用户名 string username returns: 用户链表的结点类(5) getcount方法public int getcount()returns: 返回用户数四、serverreceive类1、serverreceive类简介服务器收发消息的类,它继承了thread这个多线程的类,向客户端发送各种类型的消息,向客户端发送用户的列表2、变量说明数据类型变量名变量作用jtextareatextarea定义文本区域jtextfieldtextfield定义文本框jcombobox

17、combobox定义下拉框nodeclient定义用户链表的结点类userlinklistuserlinklist定义用户链表booleanisstop是否停止3、构造方法说明方法名及参数构造方法作用public serverreceive(jtextarea textarea,jtextfield textfield,jcombobox combobox,node client,userlinklist userlinklist)设置textarea, textfield,combobox, client, userlinklist的值4、方法说明返回值类型方法名及参数方法作用public

18、voidrun()线程里的run方法public voidsendtoall(string msg)向所有人发送消息public voidsenduserlist()向所有人发送用户的列表方法详细说明(1) run方法public void run()方法体:调用了senduserlist()方法,向所有人发送用户的列表只要客户端连接还开着,就向所有人发送消息,要是有用户下线了,则告诉所有人再向所有人发送消息,重新发送用户列表,刷新 (2) sendtoall方法public void sendtoall(string msg)parameters:发送的消息string msg 方法体:向所

19、有人发送消息(3) senduserlist方法public void senduserlist()方法体:向所有人发送用户的列表五、serverlisten类1、serverlisten类简介继承了thread线程的一个服务端的侦听类,用于侦听用户上线下线2、变量说明数据类型变量名变量作用serversocketserver此类实现服务器套接字jcomboboxcombobox定义下拉框jtextareatextarea定义文本区域jtextfieldtextfield定义文本框userlinklistuserlinklist用户链表nodeclient用户链表的结点类serverrecei

20、verecvthread服务器收发消息的类booleanisstop是否停止3、构造方法说明方法名及参数构造方法作用public serverlisten(serversocket server, jcombobox combobox,jtextarea textarea,jtextfield textfield,userlinklist userlinklist)设置server, combobox, textarea,textfield, userlinklist的值4、方法说明返回值类型方法名及参数方法作用public void run()线程里的run方法, 侦听客户端是否发来了信息方

21、法详细说明(1) run方法public void run()方法体:侦听客户端是否发来了信息,接收客户端消息,再调用serverreceive类的线程六、portconf类1、portconf类简介生成端口设置对话框的类,可以通过该类设置服务器开的端口. 2、变量说明数据类型变量名变量作用jpanelpanelport定义一个容器jbuttonsave定义保存按钮jbuttoncancel定义取消按钮jpanelpanelsave定义放按钮的容器jlabelmessage定义显示的信息标签jtextfieldportnumber定义输入框jlabeldlginfo定义提示信息的标签3、构造方

22、法说明方法名及参数构造方法作用public portconf(jframe frame)初始化设置端口的对话框4、方法说明返回值类型方法名及参数方法作用private void jbinit()初始化对话框的组件方法详细说明(1) jbinit方法private void jbinit()方法体:初始化对话框的组件七、node类1、node类简介用户链表的结点类. 2、变量说明数据类型变量名变量作用stringusername定义用户名socketsocket定义套接字objectoutputstreamoutput定义输出流objectinputstreaminput定义输入流nodenex

23、t用户链表的结点类八、help类1、help类简介一个帮助的类,可以通过该类获得使用的方法。 2、变量说明数据类型变量名变量作用jpaneltitlepanel定义标题容器jpanelcontentpanel定义内容容器jpanelclosepanel定义放关闭按钮的容器jbuttonclose定义一个关闭的按钮jlabeltitle定义一个显示标题的标签jtextareahelp定义显示帮助的文本区域colorbg定义颜色3、构造方法说明方法名及参数构造方法作用public help(jframe frame)调用jbinit()方法,初始化窗口内容4、方法说明返回值类型方法名及参数方法作用

24、private void jbinit()初始化各种组件方法详细说明(1) jbinit方法private void jbinit()方法体:初始化各种组件九、databasemanager类1、databasemanager类简介可以通过该类连接数据库,使用jdbc连接。 2、变量说明数据类型变量名变量作用connectioncon;定义一个连接数据库的类对象resultsetrs定义返回数据结果集的类对象statementstmt定义了一个执行静态 sql 语句并返回它所生成结果的对象的类对象3、构造方法说明方法名及参数构造方法作用public databasemanager()连上一个已

25、知的数据库4、方法说明返回值类型方法名及参数方法作用public void closeconnection()关闭数据库连接public resultset getresult(string strsql)执行sql语句,返回数据结果集public boolean updatesql(string strsql)更新数据,返回是否成功方法详细说明(1) closeconnection方法public void closeconnection()方法体:关闭数据库的连接(2) getresult方法public resultset getresult(string strsql)paramete

26、rs:sql语句 string strsql returns: 执行sql语句得到的数据集(3) updatesql方法public boolean updatesql(string strsql)parameters:sql语句 string strsql returns: 是否更新成功十、clientgui类1、clientgui类简介该类是聊天客户端的主界面,提供了客户端聊天的一个窗口,用户可以通过该类进行注册、登陆、信息修改、查看在线用户、添加好友及登陆前的连接设置。2、变量说明 数据类型变量名变量作用jmenuoperatemenu定义操作menujmenusettingmenu定义

27、设置menujmenuhelpmenu定义帮助 menujmenuitemregmenuitem定义注册menuitemjmenuitemloggingmenuitem定义登陆menuitemjmenuitemonlineusermenuitem定义在线用户子menuitemjmenuitemlogoutmenuitem定义注销menuitemjmenuitemfriendlistmenuitem定义好友列表menuitemjmenuitemexitmenuitem定义退出menuitemjmenuitemusersetmenuitem定义用户设置menuitemjmenuitemconnec

28、tsetmenuitem定义连接设置menuitemjmenuitemhelpmenuitem定义帮助menuitemjtextareamessagearea定义消息显示areajtextfieldinputfield定义消息输入fieldjtoolbartoolbar定义工具栏。jtoolbarstatusbar定义状态栏jbuttonusersetbutton定义用户设置按钮jbuttonconnectsetbutton定义连接设置按钮jbuttonloggingbutton定义登陆按钮jbuttonlogoutbutton定义注销按钮jbuttonexitbutton定义退出按钮jbut

29、tonsendbutton定义发送按钮jpanelpanel定义面板jpanelpanel2定义面板jpanelpanel3定义面板jlabelsendtolab定义发送labeljlabelstatusbarlab定义工具栏labeljlabelfacelab定义表情labeljcomboboxusercombobox下拉框jcomboboxfacecombobox下拉框stringusername定义用户名databasemanagerdbm定义数据库连接对象resultsetrst定义记录类socketsocket定义套接口objectoutputstreamoutput网络套接字输出流

30、objectinputstreaminput网络套接字输入流clientreceiverecvthread定义客户端消息接受对象booleanislogin判断是否登录成功jscrollpanemessagescrollpane信息显示的滚动条3、构造方法说明方法名及参数构造方法作用public clientgui ()初始化聊天客户端界面的设置4、方法说明返回值类型方法名及参数方法作用public voidsetloc(container jf)设置显示窗口的大小public voidsetislogin(boolean b)设置用户登陆状态public booleangetislogin(

31、)得到用户的登陆状态public voidsetusername(string u)设置用户名public stringgetusername()得到用户名public voidactionperformed(actionevent e)对事件的响应public voidconnect()连接到服务器public voiddisconnect()断开服务器public voidsendmessage()发送消息方法详细说明(1) setloc方法public void setloc(container jf)parameters:容器container jf (2) setislogin方法p

32、ublic void setislogin(boolean b)parameters:登陆状态boolean b(3) getislogin方法public boolean getislogin()parameters:returns: 用户登陆返回true,否则为false(4) setusername方法public void setusername(string u)parameters:用户名string u(5) getusername方法public string getusername()parameters:returns: 用户登陆的用户名(6) actionperforme

33、d方法public void actionperformed(actionevent e)parameters:事件监听actionevent e(7) connect方法 public void connect()parameters:(8) disconnect方法 public void disconnect ()parameters:(9) disconnect方法 public void sendmessage ()parameters:十一、clientreceive类1、clientreceive类简介该类主要是接受服务端或其他客户端发送的消息2、变量说明数据类型变量名变量作用j

34、comboboxcombobox定义用户下拉框jtextareatextarea定义文本域socketsocket定义socketobjectoutputstreamoutput定义输出流objectinputstreaminput定义输入流jlabelshowstatus定义label3、构造方法说明方法名及参数构造方法作用public clientreceive(socket socket,objectoutputstream output,objectinputstream input,jcombobox combobox,jtextarea textarea,jlabel showst

35、atus)初始化socket; output ;input; combobox; textarea;showstatus的值4、方法说明返回值类型方法名及参数方法作用public voidpublic void run()线程来实时接受消息方法详细说明(1) run方法public void run()parameters:十二、connectconf类1、connectconf类简介该类主要是设置连接服务器的ip及端口2、变量说明数据类型变量名变量作用jpanelpaneluserconf定义paneljbuttonsave定义保存按钮jbuttoncancel定义取消按钮jlabelmes

36、sage定义labeljtextfieldinputip定义ip输入框jtextfieldinputport定义port输入框3、构造方法说明方法名及参数构造方法作用public connectconf(jframe frame,string ip,int port)初始化frame; ip; port的值4、方法说明返回值类型方法名及参数方法作用private voidprivate void jbinit() throws exception显示界面,设置连接服务器ip,port,判断输入的合法性方法详细说明(1) jbinit方法private void jbinit() throws

37、exceptionparameters:十三、friendlist类1、friendlist类简介该类主要是显示好友列表,并能对好友进行删除,添加2、变量说明数据类型变量名变量作用containercontainer定义容器gridbaglayoutgridbagl定义gridbaglayoutgridbagconstraintsgridbagc定义gridbagconstraintsjpanelpanelcontainer定义paneljpanelpanelbutton定义paneljbuttonbuttondelete定义删除按钮jbuttonbuttoncancer定义取消按钮jtabl

38、etable定义tablecustommodeldtm定义custommodeldatabasemanagerdbm定义数据连接对象resultsetrst定义resultset3、构造方法说明方法名及参数构造方法作用public friendlist(jframe frame,string strusername2)初始化frame,strusername2的值,并初始化界面4、方法说明返回值类型方法名及参数方法作用private voidprivate void addcontainer(jpanel panel, jcomponent component,gridbagconstrain

39、ts gbc, int gridx, int gridy, int gridwidth,int gridheight)设置好友列表界面的大小,及显示位置public voidpublic void actionperformed(actionevent e)对各种操作事件的响应方法详细说明(1) addcontainer方法private void addcontainer(jpanel panel, jcomponent component,gridbagconstraints gbc, int gridx, int gridy, int gridwidth,int gridheight)p

40、arameters:面板jpanel panel,组件jcomponent component,gridbag容器 gridbagconstraints gbc,x坐标int gridy,y坐标int gridwidth,宽int gridwidth,高int gridheight(2) actionperformed方法public void actionperformed(actionevent e)parameters:事件监听actionevent e十四、maxconnect类1、maxconnect类简介该类主要是得到服务器设置客户机连接数的最大值2、变量说明数据类型变量名变量作用

41、databasemanagerdbm定义数据连接对象resultsetrs定义resultset3、构造方法说明方法名及参数构造方法作用4、方法说明返回值类型方法名及参数方法作用public intpublic int getmaxconnect()得到服务器设置客户机连接数的最大值(1) getmaxconnect方法public int getmaxconnect()parameters:returns: 服务器设置客户机连接数的最大值十五、modifyuser类1、modifyuser类简介该类主要是得到服务器设置客户机连接数的最大值2、变量说明数据类型变量名变量作用databasema

42、nagerdbm定义数据连接对象resultsetrs定义resultsetjpanelpanel1定义panel1jpanelpanel2定义panel2jlabeluserlabel定义用户labeljlabeloldpasswordlabel定义旧密码labeljlabelpasswordlabel定义密码labeljlabelpasswordconfirmlabel定义确认密码labeljlabelloginprivelegelabel定义登陆labeljlabeltruename定义真实名labeljtextfieldusertextfield定义用户名输入框jtextfieldtr

43、uenametextfield定义昵称输入框jpasswordfieldoldpasswordtextfield定义旧密码输入框jpasswordfieldpasswordtextfield定义密码输入框jpasswordfieldpasswordconfirmtextfield定义确认密码输入框jbuttonsavebtn定义保存按钮jbuttoncancelbtn定义取消按钮3、构造方法说明方法名及参数构造方法作用public modifyuser(jframe frame)初始化修改用户信息界面4、方法说明返回值类型方法名及参数方法作用public voidpublic void act

44、ionperformed(actionevent e)对用户操作事件的响应public voidpublic void setusername(string u)设置用户名public stringpublic string getusername()得到用户名(1) actionperformed方法public void actionperformed(actionevent e)parameters:事件监听actionevent e (2) setusername方法public void setusername(string u)parameters:用户名设置string u (3

45、)getusername方法public string getusername()parameters:returns: 得到用户名十六、onlineuser类1、onlineuser类简介该类主要是得到在线用户列表2、变量说明数据类型变量名变量作用databasemanagerdbm定义数据连接对象resultsetrs定义resultsetjpanelpanel1定义panel1jpanelpanel2定义panel2jtabletable定义tablejbuttonsavebtn定义保存按钮jbuttoncancelbtn定义取消按钮3、构造方法说明方法名及参数构造方法作用public

46、onlineuser(jframe frame)初始化在线用户列表界面4、方法说明返回值类型方法名及参数方法作用private voidprivate void addcontainer(jpanel panel, jcomponent component,gridbagconstraints gbc, int gridx, int gridy, int gridwidth,int gridheight)设置在线用户列表界面的大小public voidpublic void actionperformed(actionevent e)对用户操作事件的响应public stringpublic

47、string getusername()得到用户名public voidpublic void setusername(string u)设置用户名(1) addcontainer方法private void addcontainer(jpanel panel, jcomponent component,gridbagconstraints gbc, int gridx, int gridy, int gridwidth,int gridheight)parameters:面板jpanel panel,组件jcomponent component,gridbag容器 gridbagconstr

48、aints gbc,x坐标int gridy,y坐标int gridwidth,宽int gridwidth,高int gridheight(2) actionperformed方法public void actionperformed(actionevent e)parameters:事件响应actionevent e(3) setusername方法public void setusername(string u)parameters:用户名设置string u (4)getusername方法public string getusername()parameters:returns: 得

49、到用户名十七、userlogin类1、userlogin类简介该类主要是提供对用户的登陆2、变量说明数据类型变量名变量作用databasemanagerdbm定义数据连接对象resultsetrs定义resultsetjpanelpanel1定义panel1jpanelpanel2定义panel2jtabletable定义tablejbuttonsavebtn定义保存按钮jbuttoncancelbtn定义取消按钮jtextfieldtfuid定义用户名输入框jpasswordfieldpfup定义密码输入框3、构造方法说明方法名及参数构造方法作用public userlogin (jfram

50、e frame)初始化用户登陆的界面4、方法说明返回值类型方法名及参数方法作用private voidprivate void addc (jpanel panel, jcomponent component,gridbagconstraints gbc, int gridx, int gridy, int gridwidth,int gridheight)设置用户登陆的界面的大小public voidpublic void actionperformed(actionevent e)对用户操作事件的响应public stringpublic string getusername()得到用户名public intpublic int getmarkco

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论