ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:127.67KB ,
资源ID:23519872      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23519872.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java网络聊天室毕业课程设计报告内附代码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java网络聊天室毕业课程设计报告内附代码.docx

1、java网络聊天室毕业课程设计报告内附代码(此文档为word格式,下载后您可任意编辑修改!)课程设计网络聊天室院(系) 别 信电学院 班 级 计算102 学 号 姓 名 指导教师 时 间 课 程 设 计 任 务 书题 目 网络聊天室 课程设计 系 (部) 信电学院 专 业 计算机科学与技术 班 级 计算102 学生姓名 学 号 4 月 18 日至 5 月 10 日 共 4 周指导教师(签字) 系 主 任(签字) 年 月 日一、 设计内容及要求二、设计原始资料1)电子工业出版社JSP实用教程,郑阿奇编著2)电子工业出版社JAVA程序设计实用教程,叶核亚编著三、设计完成后提交的文件和图表1计算说明

2、书部分JSP界面设计2图纸部分:程序流程图四、进程安排五、主要参考资料1)电子工业出版社JSP实用教程,郑阿奇编著2)电子工业出版社JAVA程序设计实用教程,叶核亚编著考资料成 绩 评 定 表作品成绩报告成绩口试(答辩)成绩总评成绩课程设计概述 41.1问题描述 41.2功能需求分析 41.3环境需求分析 4学生信息管理系统软件总体设计 52.1整体思路 52.2总体设计流程图 6学生信息管理软件详细设计 73.1.界面设计 73.2通信功能实现方法 9参考文献 45摘要私達実践能力高、学知識運用行更創造、学校特2週間手配、私達Visual C+課程設計実習行.詳説明Visual C+6.0環

3、境下、過程設計、各種個数統計。機能、1段文字入力、文字中各類数記録、英文数、数字数、空欄数数含、明示.以下、課程通説明設計、説明統計、説明調整、総括方面開発、詳製作過程説明、作用、各種実行操作.关键字:統計,VC+6.0, 课程设计概述1.1问题描述随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。因此出现了等聊天工具,然而等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功

4、能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具。目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是绝对的CS模式,对远程服务器有非常大的依赖性,没有彻底实现点对点的交流。为此,我决定开发一个专用于实现两台计算机之间即时通讯、文件共享的软件,以方便两台计算机之间信息的交流。避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接。因此,这个软件是极具适应性和实用性的即时通讯软件。1.2功能需求分析实现网络聊天的功能,采用WindowsSocket(或JavaSocket)编程,服务器与客户端采用了TCPIP连接方式,在设计聊天

5、方案时,可将所有信息发往服务器端,再由服务器进行处理,服务器端是所有信息的中心。服务器端要保存用户信息,可利用数据库来实现这一功能,需要建立用户信息数据库。在客户端可采用文件系统保存聊天纪录和用户号码。可通过闪动托盘图标和播放不同的音乐提示信息到来及好友上线等信息。可通过建立消息链表来保存用户接收的各种消息。1.3环境需求分析运行环境:Windows 9x、2000、XP、Windows 7必要环境:JDK 1.6以上、eclipse开发环境硬件环境:CPU 400MHz以上,内存512MB以上学生信息管理系统软件总体设计2.1整体思路该CS模式的聊天系统,就是服务器来提供服务端连接响应,客户

6、端主动的发起连接请求。当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。首先是客户端的登陆,客户端在登陆时,必须设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。对于客户端的各种请求,实际上都是通过在客户发往服务器的各种字符流区分的,具体的方法就是在消息的头部以及尾部添加特殊字符串,从而实现服务器对消息请求的识别。比如对于登陆信息

7、,消息的头部就是“PEOPLO”,而对于私聊中的消息,头部就是“SEC”,其他的同理都添加了头部。当然,对于客户端来说,这些都是透明的,用户的操作并没有受到任何影响。在服务器端,消息被检测分析后,变回根据具体的目的进行处理,比如是私聊消息,服务器便会根据其尾部的目的信息,向目标端转发该条消息。这里额外要说的是,该系统特别的对用户发来的消息进行了加密处理,即用户的各种具体信息,不仅能够防止向第三方的泄漏,而且即使服务器端出现异常,信息也不会泄漏。对于私聊的方式,该系统所采用的方法类似于QQ的通信方式,由发起方主动连接,当目的方接收到连接请求后,会主动建立一个私聊窗口,从而 实现私聊。2.2总体设

8、计流程图 学生信息管理软件详细设计3.1.界面设计由于这里界面设计源代码比较简单,这里不再列出。3.1.1 服务器界面设计服务器界面3.1.2客户端界面设计登陆界面注册界面聊天室界面3.2通信功能实现方法列举部分实现通信功能的主要代码AppServer.java文件public class AppServer extends Thread private ServerSocket serverSocket; private ServerFrame sFrame; private static Vector userOnline = new Vector(1, 1); private stati

9、c Vector v = new Vector(1, 1); * * 创建服务器 启动服务监听1001端口 * * public AppServer() sFrame = new ServerFrame(); try serverSocket = new ServerSocket(1001); 获取服务器的主机名和IP地址 InetAddress address = InetAddress.getLocalHost(); sFrame.txtServerName.setText(address.getHostName(); sFrame.txtIP.setText(address.getHos

10、tAddress(); sFrame.txtPort.setText(1001); catch (IOException e) fail(e, 不能启动服务!); sFrame.txtStatus.setText(已启动.); this.start(); 启动线程 * * 退出服务器 * * param e * 异常 * param str * 退出信息 * public static void fail(Exception e, String str) System.out.println(str + 。 + e); * * 监听客户的请求,当有用户请求时创建 Connection线程 *

11、public void run() try while (true) 监听并接受客户的请求 Socket client = serverSocket.accept(); new Connection(sFrame, client, userOnline, v); 支持多线程 System.out.println(userLength:+userLength); catch (IOException e) System.out.println(不能监听); * * 启动服务器 * public static void main(String args) new AppServer(); Serv

12、erFrame.java文件public class ServerFrame extends JFrame implements ActionListener public JList list; * * * private static final long serialVersionUID = L; 服务器信息面板 JPanel pnlServer, pnlServerInfo; JLabel lblStatus, lblNumber, lblMax, lblServerName, lblProtocol, lblIP, lblPort, lblLog; public JTextField

13、 txtStatus, txtNumber, txtMax, txtServerName, txtProtocol, txtIP, txtPort; JButton btnStop, btnSaveLog; public TextArea taLog; JTabbedPane tpServer; public TextArea taMessage; 用户信息面板 JPanel pnlUser; public JLabel lblMessage, lblUser, lblNotice, lblUserCount; JList lstUser; JScrollPane spUser; JTextF

14、ield txtNotice; JButton btnSend, btnKick; public String ti = ; public String serverMessage =; public ServerFrame() 服务器窗口 super(HappyChat聊天服务器); setSize(550, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); Dimension scr = Toolkit.getDefaultToolkit().getScreenSize(); 在屏幕居中显示

15、 Dimension fra = this.getSize(); if (fra.width scr.width) fra.width = scr.width; if (fra.(scr.width - fra.width) 2, (scr.(关闭服务器(C); btnStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) closeServer(); ); lblLog = new JLabel(服务器日志); taLog = new TextArea(20, 50);

16、 btnSaveLog = new JButton(保存日志(S); btnSaveLog.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) saveLog(); ); pnlServerInfo.add(lblStatus); pnlServerInfo.add(txtStatus); pnlServerInfo.add(lblNumber); pnlServerInfo.add(txtNumber); pnlServerInfo.add(lblMax); pnlServe

17、rInfo.add(txtMax); pnlServerInfo.add(lblServerName); pnlServerInfo.add(txtServerName); pnlServerInfo.add(lblProtocol); pnlServerInfo.add(txtProtocol); pnlServerInfo.add(lblIP); pnlServerInfo.add(txtIP); pnlServerInfo.add(lblPort); pnlServerInfo.add(txtPort); pnlServerInfo.setBounds(5, 5, 100, 400);

18、lblLog.setBounds(110, 5, 100, 30); taLog.setBounds(110, 35, 400, 370); btnStop.setBounds(200, 410, 120, 30); btnSaveLog.setBounds(320, 410, 120, 30); pnlServer.add(pnlServerInfo); pnlServer.add(lblLog); pnlServer.add(taLog); pnlServer.add(btnStop); pnlServer.add(btnSaveLog); =在线用户面板= pnlUser = new J

19、Panel(); pnlUser.setLayout(null); lblMessage = new JLabel(用户消息); taMessage = new TextArea(20, 20); lblNotice = new JLabel(通知:); txtNotice = new JTextField(20); btnSend = new JButton(发送(S); btnSend.setEnabled(true); btnSend.addActionListener(new ActionListener() public void actionPerformed(ActionEven

20、t arg0) serverMessage(); ); lblUserCount = new JLabel(在线总人数 0 人); btnKick = new JButton(踢人(K); btnKick.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) tiRen(); ); lblUser = new JLabel(在线用户列表); lstUser = new JList(); lstUser.setVisibleRowCount(17); lstUser.setFixe

21、dCellWidth(180);指定的固定单元格宽度值,而不是从列表元素计算而来的宽度值 lstUser.setFixedCellHeight(18); spUser = new JScrollPane(); spUser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); spUser.getViewport().setView(lstUser); lblMessage.setBounds(5, 5, 100, 25); taMessage.setBounds(5, 35, 300, 360); lblUser

22、.setBounds(310, 5, 100, 25); spUser.setBounds(310, 35, 220, 360); lblNotice.setBounds(5, 410, 40, 25); txtNotice.setBounds(50, 410, 160, 25); btnSend.setBounds(210, 410, 80, 25); lblUserCount.setBounds(320, 410, 100, 25); btnKick.setBounds(440, 410, 80, 25); pnlUser.add(lblMessage); pnlUser.add(taMe

23、ssage); pnlUser.add(lblUser); pnlUser.add(spUser); list = new JList(); list.setListData(new String ); spUser.setViewportView(list); pnlUser.add(lblNotice); pnlUser.add(txtNotice); pnlUser.add(btnSend); pnlUser.add(lblUserCount); pnlUser.add(btnKick); =主标签面板= tpServer = new JTabbedPane(JTabbedPane.TO

24、P); tpServer.add(服务器管理, pnlServer); tpServer.add(用户信息管理, pnlUser); this.getContentPane().add(tpServer); setVisible(true); protected void serverMessage() TODO 自动生成方法存根 this.serverMessage = txtNotice.getText(); txtNotice.setText(); protected void closeServer() TODO 自动生成方法存根 this.dispose(); this.res pr

25、otected void saveLog() TODO 自动生成方法存根 try FileOutputStream fileoutput = new FileOutputStream(log.txt, true); String temp = taMessage.getText(); fileoutput.write(temp.getBytes(); fileoutput.close(); JOptionPane.showMessageDialog(null, 记录保存在log.txt); catch (Exception e) System.out.println(e); protected

26、 void tiRen() TODO 自动生成方法存根 ti = list.getSelectedValue().toString(); log(Ti:+ti); private void log(String string) TODO 自动生成方法存根 String newta = taMessage.getText(); newta += (n+string); taMessage.setText(newta); public void actionPerformed(ActionEvent evt) public static void main(String args) new Ser

27、verFrame(); Connection.java文件public class Connection extends Thread * * 与客户端通讯Socket * private Socket netClient; * * 在线用户列表 * private Vector userOnline; * * 聊天信息 * private Vector userChat; * * 从客户到服务器 输入流 * private ObjectInputStream fromClient; * * 传到客户端 打印流 * private PrintStream toClient; * * 注册用户列

28、表 * private static Vector vList = new Vector(); * * 临时对象 * private Object obj; * * 服务器日志窗体 * private ServerFrame sFrame; SuppressWarnings(unchecked) * * 创建与客户端通讯 * public Connection(ServerFrame frame, Socket client, Vector u, Vector c) netClient = client; userOnline = u; userChat = c; sFrame = frame; try 发生双向通信 检索客户输入

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1