版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计报告设计题目:同组人姓名同组人学号专业班级:聊天室王巍瑾马志超周旭201515151052015151510420151515138计科153指导教师:金松林日期:2017年6月12日一16日、题目意义和需求分析1. 题目意义即时通讯或在线聊天是目前In ternet上最为流行的通讯方式,用户之间通过 文字传输信息。这是一种可以让使用者在网络上建立私人聊天室的实时通讯服 务。除了简单的文字信息,使用者之间还可以互相发送文件、文档、音乐、视 频等文件。只要与服务器链接,无论对方在天涯海角,双方隔得多远都没有问 题。消息的实时更新,拉近了我们相知的桥梁,文件的相互传输,使同事之间
2、 办公更方便快捷。2. 需求分析a. 注册当选择注册时,创建一个File文件类,载入User.txt ”,判断用户名是否 已经存在,用户名有效后写入user.txt ”。b. 登录去user.txt”读取用户数据,验证用户名是否存在,验证用户密码是否正 确,如果以上验证全部正确,返回客户端信息,提示登陆成功进入聊天界 面。c. 聊天所有已登录的用户的名称都会在列表中显示,然后就可以选择其中一个或多个发起聊天。接收用户聊天信息,当用户发送聊天信息时,服务端将会收到客户端用 Socket传输过来的聊天信息对象,然后将其转换为Message对象,返回聊 天信息,然后系统从Message中提取消息类型
3、,再根据类型将消息转化后 通过Socket转发到相应的用户。d. 文件传输在聊天的基础上增加了一个文件传输功能。同事之间办公难免有一些资料的来往,在登录列表中选择一个用户或多个用户发送文件,等对方确认接收后即可建立连接进行文件传输。二、设计说明聊天室总体分为三个模块,主要包括注册登录,聊天模块,文件传输模块。系统运行在java环境中,要求java环境为JDK 1.8+ ;设计中的重点是通过Java中的ServerSocket搭建TCP服务器,通过在客户 端创建 Socket套接字连接服务器,然后通过 ObjectOutputStream 来发送 Message (数据消息的封装类)对象让服务器
4、接受。通过线程来存储来存储用 户的Socket连接状态,接受并处理用户发过来的信息,返回处理信息。客户机 也通过线程来接受服务器的处理数据做出响应。设计的难点是文件的传输,首先通过原有的服务器获得目标客户机的IP地址和端口,然后在客户机上建立服务器,通过要发送的文件的客户机连接接受 文件的客户机用 DataInputStream 和DataOutputStream 来推送到输入、输出 流。然后客户机接受并保存。三、系统详细设计1. 功能模块2.流程图开始1rN开启服务器Y打开登陆窗口注册*N注册成功Y结束登陆正确登陆成功聊天窗口正在传输Inr传输完成四、程序源代码及注释public ChatR
5、oom(Stri ng u_n ame, Socket clie nt) /赋值n ame = u_n ame;clie ntSocket = clie nt;on li nes = new Vector();setTitle( name);setResizable(false);setDefaultCloseOperatio n(JFrame.DO_NOTHING_ON_CLOSE);setBounds(200, 100, 688, 510);conten tPa ne = new JPa nel();setC onten tPa ne(c onten tPa ne);con te ntPa
6、 ne.setLayout( nu II);/聊天信息显示区域JScrollPa ne scrollPa ne = new JScrollPa ne();scrollPane.setBounds(10, 10, 410, 300);getC on te ntPa ne().add(scrollPa ne);textArea = new JTextArea();textArea.setEditable(false);textArea.setLineWrap(true);/ 激活自动换行功能 textArea.setWrapStyleWord(true);/ 激活断行不断字功能 textArea.
7、setFont(new Font(sdf, Font.BOLD, 13);scrollPa ne.setViewportView(textArea);/打字区域JScrollPa ne scrollPa ne_1 = new JScrollPa ne();scrollPane_1.setBounds(10, 347, 411, 97);getC onten tPa ne().add(scrollPa ne_1);final JTextArea textArea_1 = new JTextArea();textArea_1.setLineWrap(true);/ 激活自动换行功能 textAre
8、a_1.setWrapStyleWord(true); 激活断行不断字功能 scrollPa ne_1.setViewportView(textArea_1);/关闭按钮final JButton btn NewButton = new JButto n(”关闭);btnNewButton.setBounds(214, 448, 60, 30);getCo nte ntPa ne().add(bt nN ewButto n);/发送按钮JButton btnN ewButton_1 = new JButto n(”发送);bt nN ewButton_1.setBou nds(313, 448
9、, 60, 30);getRootPa ne().setDefaultButto n(bt nN ewButton_1);getCo nte ntPa ne().add(bt nN ewButton_1);/在线客户列表listmodel = new UUListModel(o nli nes);list = new JList(listmodel);list.setCellRe nderer( new CellRe nderer();list.setOpaque(false);Border etch = BorderFactory.createEtchedBorder(); list.set
10、Border(BorderFactory.createTitledBorder(etch,v+u_name+在线用户:,TitledBorder.LEADING, TitledBorder.TOP, newFont(sdf, Font.ITALIC, 20), Color.black);JScrollPa ne scrollPa ne_2 = new JScrollPa ne(list);scrollPa ne_2.setBou nds(430, 10, 245, 375);scrollPa ne_2.setOpaque(false);scrollPa ne_2.getViewport().s
11、etOpaque(false);getC onten tPa ne().add(scrollPa ne_2);/文件传输栏progressBar = new JProgressBar();progressBar.setBou nds(430, 390, 245, 15);progressBar.setMi nim um(1);progressBar.setMaximum(100);getC onten tPa ne().add(progressBar);/文件传输提示lblNewLabel = new JLabel(文件传输信息栏:);lblNewLabel.setFont(new Font(
12、SimSun, Font.PLAIN, 12);IblNewLabel.setBackgrou nd(Color.WHITE);lblNewLabel.setBounds(430, 410, 245, 15);getCo nten tPa ne().add(lblNewLabel);newtry oos=ObjectOutputStream(clie ntSocket.getOutputStream();/记录上线客户的信息,并发送给服务器Message toMsg = new Message。; toMsg.setType(O);toMsg.setName( name);toMsg.setT
13、imer(getTimer();oos.writeObject(toMsg);oos.flush();/启动客户接收线程CThread = new Clie ntl nputThread();CThread.start(); catch (IOExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();/发送按钮btnN ewButt on _1.addActio nListe ner(new Actio nListe ner() public void actio nPerformed(Actio nEve nt
14、e) String info = textArea_1.getText();List to = list.getSelectedValuesList();if (to.size() set =HashSetvStri ng();set.addAII(list.getSelectedValuesList(); toMsg.setClie nts(set);sen dMessage(toMsg););五、实验数据、结果分析1.开启服务器服务器用来将用户发送的信息发送到指定用户,所以程序执行314之前服务器一定要开启。如图5.1所示开MBpiiblic nid startl)(try toUH |t
15、m SHktt client .accept(;a. Problems Javadoc .: Declaratiar S Console HServer Java Application /opt/jwm/jdkl .B.D131/binava 2D1 丁年6月 Td 日上牛 1G1124)图5.1开启服务器2. 用户登录用户可以通过输入自己的账号密码来登录聊天室,如图5.2所示二算EM AlipUkiJll 7CPil|i VililEllL i Lili!L EQ 1 J J)Message msg = (Message) oiSrireadObjectO;flESMCfl;5ocklel
16、5nmlnnt i “fiPjiiiPi chA“df tsullnnlTnf“ti 見示*iffisg.gertTypfiO * 4)( tch叭p catchblems w Javadoc 巡 Dedaration 0 Console K:l Jav Application /opt/jvm/jdki,8.0_i ?i/binaua (201754 祐日上午 iotl2:53)图5.2登录窗口3. 用户注册当用户第一次登录时,可以通过自己注册一个账号来进入聊天室。如图5.3所示。if (msg.DpticKionPane.IJVFDfiWirilcatchSocket new Cdispo
17、 b rakelseJDptii (IOExcepts printStackT catch (ClassNote,printStackT返回注册图5.3用户注册4.多用户登录当有用户上线时服务器会向所有在线用户发送用户上线通知。如图 5.4、5.5所示。班FOR相 TENFRHOfl_ffFSSAfiF).?ms gJava Applh图5.4用户上线5.5多用户上线5.聊天用户可以通过选中在线用户列表中的用户,向选中用户发送消息,可以选择一个或多个用户发送消息。如图5.6所示。aB ItHfJ*H- 也id丄 th KWf y, x, 4H.- HM-K A lutl 2. 3. IH时5
18、“Hkfcb 1- d-k L KIN K3 B- lik 1. KJK-袈5务:吗Z :图5.6聊天功能展示6.发送文件首先用户选择要发送文件的一个或多个用户,然后在用户列表双击,弹出 选择文件框选取文件(如图5.7所示),待接收方同意接受并选择好保存位置后 开始发送(如图5.8、5.9所示),直至发送完成(如图5.10所示)。b MH二鬻站f.工 aII. * I K. X .J” V H EHL I. 图5.75号向2、3、4号发送文件帚站 HBOS, WUT图5.8等待接收方确认训n勺祥鬥協證0方0V图5.9文件传输图5.10传输完毕六、总结这次我们所设计的课题是个聊天室,网络聊天已经成为人与人之间交流的一种方式,它能把复杂的事情简单化。伴随着互联网的发展,日常交流变得越 来越重要,同时人们更亲睐实时沟通方式,于是在线聊天室应运而生。通过这次实习,让我们对网络的理解更加深刻,对编程的思路也更加清 晰。在这次实习中,我们遇到了很多问题,比如如何通过代码将网络中的 TCP 连接写出来,如何传输数据等同时我们在代码也出现了许多错误,如10错误,Socket连接错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焦化装置操作工冲突解决能力考核试卷含答案
- 电池及电池系统维修保养师安全防护考核试卷含答案
- 铁氧体材料烧成工岗位责任制能力考核试卷含答案
- 油母页岩干馏工岗位综合水平考核试卷含答案
- 兽用生物制品制造工安全教育评优考核试卷含答案
- 有机宝石检验员成果转化竞赛考核试卷含答案
- 脂肪醇胺化操作工成果评优考核试卷含答案
- 热风炉工安全实操强化考核试卷含答案
- 己二胺装置操作工岗前应急演练评估考考核试卷含答案
- 2025-2026学年国庆假作文说课稿
- 2026年教育管理能力考试试卷及解析
- 海水集中取水项目施工方案
- 2026年秋季开学情绪管理心理危机干预培训课件
- 小学主题班会课件:小小少年扣好人生第一粒扣子
- 2026年江苏省苏州市中考语文试题(原卷版)
- 2026-2030中国铬矿行业市场发展趋势与前景展望战略分析研究报告
- 美国律师职业责任制度
- 2025华能澜沧江水电股份有限公司大学毕业生招聘17人笔试参考题库附带答案详解(3卷)
- 感染性疾病科医生进修汇报
- 泥浆清运合同(2025版)
- 睿达杯二试试题和答案
评论
0/150
提交评论