欢迎来到天天文库
浏览记录
ID:6818875
大小:230.00 KB
页数:21页
时间:2018-01-27
《计算机网络课程设计实验报告--qq网络聊天室实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机网络课程设计报告设计选题 网络聊天室姓 名 马继鸣学 号 完成时间 2012-1-12一、需求分析聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用
2、户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。二.设计1.设计思想:课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客户端登录到服务器端才可以实现正常的聊天功能。2.功能设计(1)服务器
3、端的主要功能如下。在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000.当停止服务时,断开所有用户连接。(2)客户端的主要功能如下。连接到已经开启聊天服务的服务端。当服务器端开启的话,用户可以随时登录与注销。用户可以向所有人发送消息。3.详细设计聊天室服务器端设计聊天室服务器中主要的功能文件的功能如下:MyButLis.java主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。publicclassMyButLisimplementsActio
4、nListenerprivateMyServeserver;privateJTextFieldfiled1;publicvoidactionPerformed(ActionEvente)MyChatSet.java服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准
5、确的传递。publicstaticArrayListservers=newArrayList();//线程队列publicstaticvoidaddThread(MyserThreadth)//增加一个服务器线程对象publicstaticvoidsendReMess(Stringtype,Stringstate,Strings,MyserThreadmyth)//返回应答信息publicstaticvoidSendOSMess(Stringtype,S
6、tringuser)//其他用户上下线信息publicstaticvoidSendChatMess(Stringtype,Stringsender,Stringreciver,StringMess)//聊天信息publicstaticvoidSendList//用户列表MyCheckTool.java保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。//建立码表,用以保存用户信息privatestaticMapmaps=newHashMap7、ing,MyUserInfo>();publicstaticbooleanCheckUser(MyUserInfouser)//验证用户名MyFrame.java建立服务器的主界面,关联侦听器。并启动线程。MyFramemy=newMyFrame();my.ShowUI();//显示UI界面publicvoidShowUI()server.SetUP();MyserThread.java服务器线程类,定义输入输出流,发送读取信息,获取信息中相应标签的信息,用以判断用户名,密码,并可以中断连接。this.s8、ocket=socket;output=socket.getOutputStream();input=socket.getInputStream();publicvoidSendMess(Strings)//发送信息publicStringReadMess()//读取信息publicbooleanReadFirst()//将第一条信息读出来publicStringGetValue(Stringtype,StringMess)p
7、ing,MyUserInfo>();publicstaticbooleanCheckUser(MyUserInfouser)//验证用户名MyFrame.java建立服务器的主界面,关联侦听器。并启动线程。MyFramemy=newMyFrame();my.ShowUI();//显示UI界面publicvoidShowUI()server.SetUP();MyserThread.java服务器线程类,定义输入输出流,发送读取信息,获取信息中相应标签的信息,用以判断用户名,密码,并可以中断连接。this.s
8、ocket=socket;output=socket.getOutputStream();input=socket.getInputStream();publicvoidSendMess(Strings)//发送信息publicStringReadMess()//读取信息publicbooleanReadFirst()//将第一条信息读出来publicStringGetValue(Stringtype,StringMess)p
此文档下载收益归作者所有