欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    JAVA局域网聊天-课程设计.doc

    • 资源ID:854786       资源大小:1.47MB        全文页数:17页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JAVA局域网聊天-课程设计.doc

    1、课程设计报告面向对象课程设计报告 第 17 页,共 17 页 1课程设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。2课程设计任务与要求:课程设计任务:局域网聊天程序的设计与实现该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。服务器端程序:可将消息发送到客户端和

    2、接受客户端发送来的信息课程设计要求:课程设计可选用NetBeans、Eclipse、JBuilder等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。通过这次设计,要求掌握以下内容:1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2)类、包、接口的定义与使用3)常用工具类与算法的实现(数组、向量、字符串、链表)4)Java常用标准GUI组件及其事件处理5)Java的异常处理机制6)Java的数据库连接技术7)Java的多线程技术与动画制作8)Java的网

    3、络编程设计报告书封面和正文格式要符合淮海工学院课程设计报告书封面与正文标准格式要求,设计报告内容不少5000字。本课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书(包括:需求分析、概要设计、详细设计)、设计成果(包括:运行界面、主要代码、测试结果)和设计心得、附录或参考资料几个部分。(1) 每位同学通过智能教学平台需提交可独立运行的应用程序,要求程序书写规范,源程序需加必要的注释;(2) 每位同学需独立提交书面设计报告书(每人一份),要求编排格式统一、规范、内容充实,同时通过教学平台提交设计报告电子版;(3) 提交日期:第19周周二(2012 年6月26日)之前。3课程设计说明书

    4、(1)需求分析功能分析:该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。服务器端具有建立侦听服务,转发聊天信息,响应用户下线,统计在线人数。客户端具有请求登陆,请求下线,发送接收群聊和私聊信息,记事本,发送接收文件功能。表1 服务器各模块名称功能汇总表序号模块名基本功能1端口设置设置侦听的端口号,默认为7777。2启动服务开启侦听端口,允许客户端连接。3停止服务关闭倾听端口,中断所有客户端的连接。再次点击则退出。4帮助显示各个模块的功能及操作方法。5状态栏统计在线人数。表2 客户端各模块名称功能汇总表序号模块名基本功能1连接设置设置要连接的服务器所在主机的IP地址和侦听听端口

    5、。2文件传输可以与指定的IP地址传送文件。3记事本记录重要的信息并存到本地。4换肤更改背景图片(可换四种)。5发送发送聊天内容。6退出关闭客户端。(2)概要设计3、详细设计 服务器端主要包括4个文件,它们的功能如下:1. Server.java:其主要功能为定义服务器端的界面,添加事件侦听与事件处理。调用serverRun类来实现服务器端对客户端的连接;调用Details类来实现服务器端用户上线与下线的侦听;用变长数组来记录用户列表。2. PortConf.java:是用户对服务器侦听端口进行修改配置的类。3. Objecting.java: 要传输某一类的对象,就要实现Serializabl

    6、e接口, 就可以在网络上传输。4. ServerHelp.java:服务器端的帮助。客户端主要包括5个文件,它们的功能如下:1. LogIn.java:注册并登陆到服务器。2. Client.java:其主要功能为定义客户端的界面,添加事件侦听与事件处理。该类定义了connect()与disconnect()方法实现与服务器的连接和断开连接;调用ClientSocket类实现客户端消息的接收,然后转发到客户端的主界面上。3. ConnectConf.java:是用户对所要连接的服务器IP地址和端口的配置。4. NoteBook.java:记录重要的事情,并存在本地。5. UserHelp.ja

    7、va:客户端的帮助信息。表3 聊天室基本功能表序号文件名基本功能1Server.java启动服务器2LogIn.java注册登录。3Client.java客户端主界面。4ConnectConf.java设置连接的服务器IP地址和端口。5PortConf.java设置服务器侦听端口。6Objecting.java传输对象。7NoteBook.java便签,可保存到本地。8ServerHelp.java服务端帮助信息9UserHelp.java客户端帮助信息。4课程设计成果运行界面: 服务端服务端界面(Server.java): 端口设置界面: 服务端帮助界面: 注册登录界面(LogIn.java

    8、): 客户端主界面: 私聊界面: 另一头客户端:客户端连接设置:记事本界面: 换肤:客户端帮助界面: 主要代码:Server.java/服务端class serverRun extends Thread public void run() try System.out.println(开始SERVERRUN);serversocket = new ServerSocket(port);area.append(new Date().toLocaleString() + 服务器启动 + port+ 端口正在侦听.n);start.setEnabled(false);set.setEnabled(f

    9、alse);while (true) Socket socket = serversocket.accept();/接受1个客户连接System.out.println(连接成功);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream();/获得客户名称String name = br.readLine();area.append(new Date().toLocaleString() + 服务器接收用户+ name + 的连接n);soconly.add(socket);/收集所有

    10、SOCKETnum+;showStatus.setText( 当前在线人数: + num);/发送新用户消息Iterator i = soconly.iterator();while (i.hasNext() Socket s = (Socket) i.next();/获得其他SOCKET的通信口ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream();out.writeObject(【系统消息】 + name + 用户进入);sockets.put(name, socket);/收集所有有标市的SOCKETVect

    11、or v = getList();Iterator j = soconly.iterator();while (j.hasNext() Socket s = (Socket) j.next(); /获得其他SOCKET的通信口ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream();out.writeObject(v);System.out.println(服务器发送用户列表进入);Details d = new Details(socket);socket_thread.put(name, d);/收集SOCKET

    12、线乘d.start(); catch (Exception e) e.printStackTrace();class Details extends Thread boolean alive = true;ObjectInputStream in;ObjectOutputStream out;Socket socket;/客户SOCKETDetails(Socket socket) this.socket = socket;public void run() while (alive) try in = new ObjectInputStream(socket.getInputStream()

    13、;Objecting objecting = (Objecting) in.readObject();/获得对象String name = objecting.getKey();/获得名字String content = objecting.getValue();/获得内容if (name.equalsIgnoreCase(all) Iterator i = soconly.iterator();while (i.hasNext() Socket s = (Socket) i.next();/获得其他SOCKET的通信口out = new ObjectOutputStream(s.getOut

    14、putStream();out.writeObject(content);System.out.println(Send);if (name.equalsIgnoreCase(exit) Details thread = (Details) socket_thread.get(content);thread.alive = false;area.append(new Date().toLocaleString() + + content + 离开n);socket.close();soconly.remove(socket);/群发SOCKET消失sockets.remove(content)

    15、;/标市SOCKET消失num-;showStatus.setText( 当前在线人数: + num);Iterator i = soconly.iterator();while (i.hasNext() Socket s = (Socket) i.next();/获得其他SOCKET的通信口out = new ObjectOutputStream(s.getOutputStream();out.writeObject(【系统消息】 + content + 用户离开);Vector v = getList();Iterator j = soconly.iterator();while (j.h

    16、asNext() Socket s = (Socket) j.next(); /获得其他SOCKET的通信口ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream();out.writeObject(v);System.out.println(服务器发送用户列表离开);if (!name.equalsIgnoreCase(all)& !name.equalsIgnoreCase(exit) area.append(new Date().toLocaleString()+ 处理私聊信息n);Socket s = (Soc

    17、ket) sockets.get(name);out = new ObjectOutputStream(s.getOutputStream();out.writeObject(content); catch (Exception e) e.printStackTrace();Client.java/客户端class ClientSocket extends Thread ObjectInputStream in;ObjectOutputStream out;PrintWriter pw;public void run() try pw = new PrintWriter(socket.getO

    18、utputStream(), true);pw.println(name);/发送标记信息!名字 catch (Exception e) e.printStackTrace();while (true) try in = new ObjectInputStream(socket.getInputStream();Object o = in.readObject();if (o instanceof String) area.append(o.toString() + n);if (o instanceof Vector) System.out.println(列表操作);Vector v =

    19、(Vector) o;list.removeAll();Object obj = v.toArray();for (int i = 0; i obj.length; i+) System.out.println(String) obji);list.add(String) obji); catch (Exception e) e.printStackTrace();list.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String to = list.getSelectedI

    20、tem();String content = JOptionPane.showInputDialog(null, 输入向 + to+ 发送的私聊信息, 私聊, JOptionPane.INFORMATION_MESSAGE);if (content = null) return; else Objecting o = new Objecting(to, 私聊信息n + name + + (new Date().toLocaleString() + n + content);/获得消息准备发送try ObjectOutputStream out = new ObjectOutputStream(

    21、socket.getOutputStream();out.writeObject(o);JOptionPane.showMessageDialog(null, to + 收到消息); catch (Exception e2) e2.printStackTrace(););text.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (text.getText().equals() JOptionPane.showMessageDialog(null, 消息为空);return;

    22、 else Objecting o = new Objecting(all, name + :+ text.getText();/获得消息准备发送try ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream();out.writeObject(o);text.setText(); catch (Exception e2) e2.printStackTrace(););Objecting.java/传输对象public class Objecting implements Serializable Strin

    23、g key; String value; public Objecting() public Objecting(String key,String value) this.key =key; this.value=value; public void setKey(String key) this.key = key; public void setValue(String value) this.value = value; public String getKey() return key; public String getValue() return value; 测试结果: 客户端

    24、端口设置:设置成功 设置失败在线人数:停止: 客户端:连接设置:成功:失败: 记事本: 客户端帮助界面:换肤: 5.课程设计心得这次的课程设计,我觉得还是很成功的。先是成功实现了此次设计的要求,另外我还添加了一些辅助功能。一开始并不打算选这个题目的时候,后来只是抱着试试看的心理,这部分的知识应该说是没有学过,老师上课也没有讲这个SOCKET套接字的部分,是要我们课后自己看的。我只好把书上的一段基于客户-服务器端的计算三角形面积的java代码先调试一下,熟悉一下代码运行的效果,给我一点思路。再根据这个程序的框架,来编写代码,但是后来发现自己编代码并不简单,折腾了好久也没成功,觉得自己的设计思路有

    25、点偏差,所以才导致这个程序的失败,看来把理论变成实践可真不是一件简简单单就能完成的事。接下来的几天,我只好到网上的一些专门学习JAVA的论坛里找些资料来看看,也试着调试调试别人编的程序,好给自己的课程设计定一个大体的框架。在坛子里逛了许久,我的程序的雏形就也差不多完成了,只是简单的聊天功能,运行服务器,在给定端口侦听,转发客户端的消息,最后显示在客户端聊天窗口的文本域中。虽然这才是只是一点点的成功,但也使这次课程设计有了好的开端,我相信后面的问题也就不算问题了。我又陆陆续续地添加些功能,让程序更加丰满,最重要的是设计出来的程序更加的合理,更人性化。先是聊天室服务器端启动服务器时,将创建侦听套接

    26、字,创建用户列表,创建并启动侦听线程。用户登录时,将创建套接字,与服务器直接连接,并创建客户端接收线程。服务器端侦听到有用户上线后,将创建新的用户节点,并在主界面上显示用户上线,发送新的用户列表。客户端发送信息时,将要发送的内容通过output.writeObject();进行发送。服务器端发送信息时,如果是发送给所有人,就遍历用户链表,如果是发送给某个用户,先在链表中找到该节点,通过output.writeObject()发送信息。服务器端和客户端接收信息时,先读取聊天信息标识,做出判断后,依次读取信息,处理信息,并在主界面上显示。服务器端还要将准备好的信息转发给指定的用户。当服务器端侦听到

    27、有用户下线后,将删除该用户节点,并在主界面上显示用户下线,发送新的用户列表。服务器端停止服务后,也会向客户端发送服务器即将关闭的信息,客户端将不再可以聊天。这也就是程序的核心,然后添加了文件传输,记事本,背景切换的功能,还美化了界面,给按钮添加图片。设置背景还真的不太好弄,原来JFrame还有分层的,要把图片放在最底层,还要使内容窗格透明,这样才能实现设置背景的效果。本来还尝试添加语音聊天的功能,但由于自己的知识比较有限,所以只好作罢。但这也会让我以后更加的努力去学好JAVA,在以后的编程中,JAVA真的个很好的编程语言。这次程序设计也是一个毅力的考验过程。有时候往往只是一个小小的错误,却要花出几小时甚至是一天的时间才可能发现它,所以在这个过程不能过于急躁,要把那部分的代码挑出来一一调试,来缩小范围,找出错误。总的来说,这次课程设计给我的收获还是很多的,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。最重要的是,我知道了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正掌握这门技术,在以后运用的时候才能更得心应手。.忽略此处.


    注意事项

    本文(JAVA局域网聊天-课程设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922