欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《Java程序设计项目化教程》任务十实现网络聊天.docx

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

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

    《Java程序设计项目化教程》任务十实现网络聊天.docx

    «Java程序设计项q化教程教学设计授课班级:某某年级授课学期:某禁学年一某学期教师袅名:某某老师教师可参见教材中的内容,讲解DatagramPacket类的常用方法。(4) DatagramSocket的作用是什么?教师可通过运输货物中“集装箱”与“码头”的例子引出DatagramSocket,然后讲解使用这 个类的实例对象就可以发送和接收DatagramPacket数据包。(5) DatagramPacket的构造方法有哪些?想创立一个DatagramSocket对象,同样需要了解一下它的构造方法,它的主要构造方法如下 所示: DatagramSocket(): DatagramSocket(int port): DatagramSocket(int portJnetAddress addr)DatagramPacket类的常用方法有哪些?教师可参见教材中的内容,讲解DatagramSocket类的常用方法。(6) UDP网络程序了解了 DatagramPacket和DatagramSocket的相关知识后,教师可以编写一个UDP的网络程 序,来演示这两个类的使用。(8)聊天程序设计1)教师首先对教材中聊天程序设计任务进行介绍,然后演示程序的运行结果。2)带着学生明确本任务的任务目标以及实现思路。3)通过实现思路讲解任务实现代码的编写。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成聊天程序设计任务的编写,巩固本节的学习内容。第九课时(TCP 通信、ServerSocket> Socket、简单的 TCP 网络程序)一、回顾上节课内容,引出本节内容(1)对上节课留的作业进行答疑(2)回顾前面内容,引出本节课主题在上一节课中,我们学习了如何实现UDP通信,本节中,将学习在程序中如何实现TCP通 信。(3)明确学习目标1、了解ServerSocket类及其常用方法。2、了解Socket类及其常用方法。3、掌握简单的TCP网络程序编写二、进行重点知识的讲解(1) ServerSocket教师首先要讲解ServerSocket类的作用。JDK的包中提供了一个ServerSocket类, 该类的实例对象可以实现一个服务器端的程序。接下来教师要带着学生讲解ServerSocket类创立对象时使用的构造方法。 ServerSocket(): ServerSocket(int port): ServerSocket(int port, int backlog): ServerSocket(int port, int backlog, InetAddress bindAddr)最后,讲解ServerSocket的常用方法。(2) Socket教师首先讲解Socket类的作用。有了服务器端程序还不够,要想实现通信,还需要一个客户 端程序与之交互,为此JDK提供了一个Socket类,用于实现TCP客户端程序。然后讲解Socket类的构造方法。Socket的构造方法有三种,具体如下:1 Socket()Socket(String host,int port)2 Socket(InetAddress address,int port)接着教师要带着学生讲解Socket的常用方法(可参见教材表11-5)。最后教师可通过画图来描述服务器端和客户端的数据传输,如下图。(3)简单的TCP网络程序讲解完ServerSocket类和Socket类后,教师可编写一个程序,来演示这两个类的具体用法。三、归纳总结,自测练习,布(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成教材中简单TCP网络程序代码的编写,巩固本节的学习内容。第十课时(多线程的TCP网络程序、文件上传)一、回顾上节课内容,引出本节内容(1)对上节课留的作业进行答疑(2)回顾前面内容,引出本节课主题上一节课主要讲解了 TCP通信中ServerSocket和Socket类的相关知识,并编写了一个简单 的TCP网络程序,但此程序只是一个单线程程序,当有一个客户端程序访问服务器端时,服务 器端就会结束阻塞状态,完成程序的运行。然而现实中,服务器端的程序通常都是允许被多个应 用程序访问的,如门户网站被多个用户同时访问、多个用户同时上传文件等。本节课将主要讲解如何实现多线程的TCP网络程序,以及如何使用TCP程序实现文件上传。(3)明确学习目标1、掌握多线程服务器端程序的编写。2、学会分析“文件上传”任务的实现思路。3、根据实现思路能够独立完成“文件上传”任务的源代码编写、编译及运行。4、掌握网络通信中TCP/IP协议的编程原理。5、理解并掌握TCP通信中ServerSocket和Socket类的使用。二、进行重点知识的讲解(1)多线程的TCP网络程序教师首先通过画图来说明多个客户端访问同一个服务器端程序的实现原理,接下来通过改写 上一节课中编写的简单的TCP网络程序的服务器端代码,来演示多线程网络程序的实现。(2)文件上传1)教师首先对教材中文件上传任务进行介绍,然后演示程序的运行结果。2)带着学生明确本任务的任务目标以及实现思路。3)通过实现思路讲解任务实现代码的编写。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成教材中文件上传任务代码的编写,巩固本节的学习内容。第十一课时(上机练习)上机一:(考察知识点UDP通信)要求学生完成聊天程序设计任务代码的编写。第十二课时(上机练习)上机一:(考察知识点TCP通信)要求学生完成文件上传任务代码的编写。思考题和习题教学后记课题 名称计划单任务十实现网络聊天;12课时时内容 分析本章将针对Java线程和网络编程的相关知识进行详细地讲解,其中包括线程的创立、线程的 生命周期、线程的优先级、线程的同步、TCP/IP通信等。教学目标 及基本要 求1、掌握创立多线程的两种方式2、了解线程的生命周期及其调度方式3、掌握同步代码块和同步方法的使用4、了解了 TCP/IP协议的特点5、掌握IP地址和端口号的作用6、掌握InetAddress对象的使用7、掌握UDP和TCP通信方式教学 重点1、继承Thread类创立多线程2、实现Runnable接口创立多线程3、同步代码块4、同步方法5、死锁问题6、TCP/IP 协议7、UDP和TCP通信教学 难点1、同步代码块2、同步方法3、死锁问题4、UDP和TCP通信教学 方式讲师课堂教学要以PPT讲授为主,并结合多媒体进行教学教 学 过 程第一课时(多线程概述、线程的创立)一、创设情境,引入流的概念(1)通过现实举例,引出多线程在使用计算机时,很多任务是可以同时进行的。例如,可以一边浏览网页,一边打印文档, 还可以一边聊天,一边复制文件等。计算机这种能够同时完成多项任务的技术,就是多线程技术。 Java是支持多线程的语言之一,它内置了对多线程技术的支持,可以使程序同时执行多个执行片 段。本章将针对Java多线程的相关知识进行详细地讲解。(3)明确学习目标1、了解多线程的概念。2、掌握多线程创立的两种方式。二、进入重点知识的讲解(1)什么是进程?教师首先讲解进程的概念,并带着学生查看计算机中的任务管理器。在一个操作系统中,每 个独立执行的程序都可称之为一个进程,也就是“正在运行的程序”。目前大局部计算机上安装的都是多任务操作系统,即能够同时执行多个应用程序,最常见的有Windows、Linux、Unix等。(2)什么是线程?每个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单 元可以看作程序执行的一条条线索,被称为线程。(3)什么是多线程?多线程是指一个进程在执行过程中可以产生多个单线程,这些单线程程序在运行时是相互独 立的,它们可以并发执行。多线程程序的执行过程如下图。(4)如何继承Thread类创立多线程?教师首先讲解Java中创立多线程的两种方式分别是继承Thread类和实现Runnable接口。接 下来编写案例,先演示单线程程序的运行,然后修改代码,让程序继承Thread类创立多线程, 并演示其执行效果。(5)如何实现Runnab加接口创立多线程?教师首先讲解继承Thread类创立多线程的局限性,然后引出多线程的另一种创立方式实现 Runnable接口。接下来编写案例,演示如何实现Runnable接口创立多线程。(6)两种实现多线程方式的比拟教师可通过编写售票程序案例来演示两种多线程方式的不同。通过程序的运行结果可知,实 现Runnable接口相对于继承Thread类来说,有如下显著的好处:3 .适合多个相同程序代码的线程去处理同一个资源的情况,把线程同程序代码、数据有效 的别离,很好的表达了面向对象的设计思想。4 .可以防止由于Java的单继承带来的局限性。在开发中经常碰到这样一种情况,就是使用 一个已经继承了某一个类的子类创立线程,由于一个类不能同时有两个父类,所以不能用继承 Thread类的方式,那么就只能采用实现Runnable接口的方式。事实上,大局部的多线程应用都会采用第二种方式,即实现Runnable接口。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成课堂练习代码的编写,加深理解,巩固本节的学习内容。第二课时(线程的生命周期及状态转换、线程的调度)一、回顾上节课内容,引出本节内容(1)对上节课留的作业进行答疑(2)回顾上节课内容,引出本节课主题在上一节课中,主要讲解了什么是多线程,以及创立多线程的两种方式。本节课将对线程的 生命周期和线程调度的相关知识进行讲解。(3)明确学习目标1、了解线程的生命周期及其状态转换。2、了解线程的优先级。3、掌握线程休眠、让步和插队的方法。二、进行重点知识的讲解(1)线程的生命周期及转换状态当Thread对象创立完成时,线程的生命周期便开始了。当run()方法中代码正常执行完毕或 者线程抛出一个未捕获的异常(Exc叩tion)或者错误(Error)时,线程的生命周期便会结束。线程整 个生命周期可以分为五个阶段,分别是新建状态(New)、就绪状态(Runnable)、运行状态(Running)、 阻塞状态(Blocked)和死亡状态(Terminated),线程的不同状态说明了线程当前正在进行的活动。 在程序中,通过一些操作,可以使线程在不同状态之间转换,如图下列图所示。(新建状态获得同步锁 阻塞10方法j 调用notify。方 调用join。的线程终止 sleep。时间至start()就绪状态获得CPU使用权阻塞状态等待同步锁调用10阻塞方法调用wait。方法调用join。方法调用sleep。方法失去CPU使用权死亡状态运行状态.J run()执行完Exception 或 Error接下来教师结合线程的状态转换图分别讲解线程生命周期的5中状态。(2)什么是线程调度?程序中的多个线程是并发执行的,某个线程假设想被执行必须要得到CPU的使用权。Java虚 拟机会按照特定的机制为程序中的每个线程分配CPU的使用权,这种机制被称作线程的调度。(3)线程调度的两种模型在计算机中,线程调度有两种模型,分别是分时调度模型和抢占式调度模型。所谓分时调度 模型是指让所有的线程轮流获得CPU的使用权,并且平均分配每个线程占用的CPU的时间片。 抢占式调度模型是指让可运行池中优先级高的线程优先占用CPU,而对于优先级相同的线程,随 机选择一个线程使其占用CPU,当它失去了 CPU的使用权后,再随机选择其他线程获取CPU使 用权。Java虚拟机默认采用抢占式调度模型。(4)如何设置线程的优先级?线程的优先级可以通过Thread类的setPriority(int newPriority)方法对其进行设置,该方法中 的参数newPriority接收的是1-10之间的整数,也可以使用Thread类提供的三个静态常量表示线程的优先级。(5)如何使线程进入休眠状态?如果希望人为地控制线程,使正在执行的线程暂停,将CPU让给别的线程,可以使用静态 方法sleep(long millis)让当前正在执行的线程暂停一段时间,进入休眠等待状态。当前线程调用 sleep(long m川is)方法后,在指定时间(参数millis)内该线程是不会执行的,这样其他的线程就可以 得到执行的机会了。接下来教师可编写一个案例,来演示sleep(long millis)方法的使用。最近讲解完案例代码后,要提醒学生注意sleep。是静态方法,只能控制当前正在运行的线程 休眠,而不能控制其他线程休眠。当休眠时间结束后,线程就会返回到就绪状态,而不是立即开 始运行。(6)如何实现线程让步?教师首先讲解什么是线程让步。所谓的线程让步是指正在执行的线程,在某些情况下将CPU 资源让给其他线程执行。接下来讲解线程让步可以通过yield。方法实现,并将yield。方法与sleep。方法进行比照。最后编写案例来演示yield。方法的使用。(6)如何实现线程插队?Thread类中提供了一个join()方法来实现线程的插队功能。当在某个线程中调用其他线程的 join()方法时,调用的线程将被阻塞,直到被join。方法加入的线程执行完成后它才会继续运行。 教师可编写一个案例来演示join()方法的使用。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成教材中案例代码的编写,巩固本节的学习内容。第三课时(线程平安、同步代码块、同步方法)一、回顾上节课内容,引出本节内容(1)对上节课留的作业进行答疑(2)回顾前面内容,引出本节课主题前面小节讲解过多线程的并发执行可以提高程序的效率,但是,当多个线程去访问同一个资 源时,也会引发一些平安问题。例如,当统计一个班级的学生数目时,如果有同学进进出出,那么 很难统计正确。为了解决这样的问题,需要实现多线程的同步,即限制某个资源在同一时刻只能 被一个线程访问。本节课将详细讲解多线程中出现的问题以及如何使用同步来解决。(3)明确学习目标1、了解线程平安问题的法师原因。2、掌握同步代码块的使用。3、掌握同步方法的使用二、进行重点知识的讲解(1)线程平安问题教师先以前面售票案例中可能碰到一张票被打印屡次,或者打印的票号为0或者为负的情况 引出线程平安问题,然后编写一个案例来演示这种问题。(2)同步代码块教师带着学生通过线程平安问题的案例来分析可知,线程平安问题就是由多个线程同时处理 共享资源所导致的。所以,要想解决线程平安问题,就要保证处于共享资源的代码在任何时刻只 能有一个线程访问。为了实现这种限制,Java中提供了同步机制。当多个线程使用同一个共享资 源时,可以将处理共享资源的代码放在一个使用synchronized关键字来修饰的代码块中,这个代 码块被称作同步代码块,其语法格式如下:synchronized(lock)操作共享资源代码块)接下来教师通过修改售票案例来演示同步代码块的使用。(3)同步方法除了使用同步代码块外,还可以使用同步方法来解决线程平安问题。使用synchronized关键 字修饰的方法被称为同步方法,它能实现和同步代码块同样的功能,具体语法格式如下:synchronized返回值类型 方法名(参数1,.) 被synchronized修饰的方法在某一时刻只允许一个线程访问,访问该方法的其他线程都会发 生阻塞,直到当前线程访问完毕后,其他线程才有机会执行该方法。接下来教师通过修改售票案例来演示同步方法的使用。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成教材中案例代码的编写,巩固本节的学习内容。第四课时(死锁问题、银行存款程序设计)一、回顾上节课内容,引出本节内容(1)对上节课留的作业进行答疑(2)回顾前面内容,引出本节课主题上一节课中,讲解了线程平安问题以及处理的两种方式,然而在实际编写多线程程序的时候, 还可能会遇到另一种问题一一死锁。本节课将对线程中的死锁问题进行讲解。(3)明确学习目标1、理解死锁问题发生的原因。2、学会分析“银行存款程序设计”任务的实现思路。3、能够根据思路独立完成“银行存款程序设计”的源代码编写、编译及运行。4、通过存款程序理解多线程平安问题的发生原因、并掌握如何解决多线程平安问题。二、进行重点知识的讲解(1)死锁问题教师首先通过中国人和美国人就餐问题引出死锁。然后编写一个案例来模拟演示死锁问题。(2)银行存款程序设计1)教师首先对教材中银行存款程序设计任务进行介绍,然后演示程序的运行结果。2)带着学生明确本任务的任务目标以及实现思路。3)通过实现思路讲解任务实现代码的编写。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成教材中银行存款程序设计任务代码的编写,巩固本节的学习内容。第五课时(上机练习)上机一:(考察知识点继承Thread类创立多线程)请按照以下要求设计一个多线程并发案例。耍求如下:1)写一个 MyThreadOl 类继承 Thread 类。2)覆写Thread类中的run()方法,内部编写一个死循环输出一段话。3)编写测试类Example。1,在main。方法中,创立MyThread对象,并执行start。方法,也在 main。方法中编写一个死循环输出一句话。4)运行ExamplOl中的main。方法,观察控制台输出。上机二:(考察知识点实现Runnable接口创立多线程)请按照以下要求设计一个多线程并发案例。要求如下:1)写一个 MyThreadO2 类实现 Runnable 接 口。2)实现Runnable接口中的run()方法,内部编写一个死循环输出一段话。3)编写测试类Example02,在main()方法中,利用MyThread对象创立线程对象,并启动线程, 也在main()方法中编写一个死循环输出一句话。4)运行Example02中的main。方法,观察控制台输出。第六课时(上机练习)上机一:(考察知识点多线程的创立及同步)要求学生完成银行存款程序设计任务代码的编写。第七课时(网络通信协议、IP地址和端口号、InetAddress. UDP与TCP协议)一、创设情境,引入流的概念(1)通过计算机网络,引出网络通信协议教师首先讲解什么是计算机网络,由计算机网络引出位于同一个网络中的计算机在进行连接 和通信时必须要遵守一定的规那么,这些连接和通信的规那么被称为网络通信协议。(2)进入主题,讲解网络通信协议的分类网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/英特网互联协议)、UDP 协议(User Datagram Protocol, 用户数据报协议)、ICMP协议(Internet Control Message Protocol, Internet控制报文协议)和其 他一些协议的协议组。(3)明确学习目标1、了解网络通信协议和TCP/IP网络通信模型。2、了解IP地址以及端口号的作用。3、掌握InetAddress类的使用。4、了解UDP与TCP协议。三、进入重点知识的讲解TCP/IP 模型由于本章所学内容都是基于TCP/IP协议的内容,所以先要了解一下TCP/IP协议。TCP/IP(又 称TCP/IP协议簇)是一组用于实现网络互连的通信协议,其名称来源于该协议簇中两个重要的 协议(TCP协议和IP协议)。基于TCP/IP的参考模型将协议分成四个层次,如下列图所示。讲解完TCP/IP的层次结构后,需要介绍一下每个层次的功能。(1) IP地址和端口号教师需要简单讲解下什么是IP地址,以及IP地址的分类。并通过画图说明IP地址和端口号 的作用。(2) InetAddress在JDK中,提供了一个与IP地址相关的InetAddress类,该类用于封装一个IP地址,并提供 了一系列与IP地址相关的方法,InetAddress类的常用方法如下表所示。InetAddress getLocalHost()创立 个表示本地主机的InetAddress对象String getHostName()得到IP地址的主机名,如果是本机那么是计算机名,不是本机 那么是主机名,如果没有域名那么是IP地址boolean isReachable(int timeout)判断指定的时间内地址是否可以到达String getHostAddress()得到字符串格式的原始IP地址讲解完InetAddress类的常用方法后,教师可编写一个类来演示这些常用方法的使用。(4) UDP与TCP协议教师首先要讲解下UDP和TCP协议是什么,然后可以画图讲解它们是如何传输数据的,以 及它们的优缺点和使用场景是什么。三、归纳总结,自测练习,布置作业(1)对课堂上讲解的知识点进行总结,使用教材中的自测练习题巩固本节课的知识点。(2)让学生动手练习,完成课堂练习代码的编写,加深理解,巩固本节的学习内容。第八课时(DatagramPacket > DatagramSocket > UDP 网络程序、聊天程序设计)一、回顾上节课内容,引出本节内容(1)对上节课留的作业进行答疑(2)回顾上节课内容,引出本节课主题在上一节课中已经介绍了 UDP是一种面向无连接的协议,本节课将主要讲解Java中的UDP 通信。(3)明确学习目标1、了解DatagramPacket类及其常用方法。2、了解DatagramSocket类及其常用方法3、掌握UDP网络程序的编写4、理解“聊天程序设计”任务的实现思路及实现代码。二、进行重点知识的讲解(1) DatagramPacket的作用是什么?教帅可通过两个码头运输货物例子,引出DatagramPacket,然后讲解DatagramPacket是JDK 中提供的一个用于封装UDP通信中发送或者接收的数据的类。(2) DatagramPacket的构造方法有哪些?想要创立一个DatagramPacket对象,首先需要了解一下它的构造方法,它的主要构造方法如 下所示: DatagramPacket(byte buf,int length); DatagramPacket(byte buf,int length,InetAddress addr,int port): DatagramPacket(byte| buf,int offset,int length): DatagramPacket(byte| buf,int offset,int lengthJnetAddress addr,int port)(3) DatagramPacket类的常用方法有哪些?方法声明功能描述"HI 二参数host表示指定的主机,该方法用于在给定主机名的情况InetAddress getByName(Stnng host)”.& '* * * 6 下确定主机的IP地址

    注意事项

    本文(《Java程序设计项目化教程》任务十实现网络聊天.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开