20175214 《Java程序设计》第11周学习总结

20175214 《Java程序设计》第11周学习总结


本周学习任务总结

1、根据《java2实用教程》和蓝墨云学习视频学习第十三章;

2、尝试将课本重点内容用自己的话复述手打;

3、输入课本代码并上传码云;

4、使用IDEA调试代码;


教材学习重点内容总结

13.1 URL类

  • URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程序称作客户端程序。
  • 一个URL对象通常包含最基本的三部分信息:协议、地址、资源。
  • 13.1.1 URL的构造方法
    • URL类通常使用如下的构造方法创建一个URL对象:
    public URL(String spec) throws MalformedURLException
    public URL(String protocol, String host,String file) throws MalformedURLException
  • 13.1.2 读取URL中的资源
    • URL对象调用InputStream openStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入到客户端。

13.2 InetAdress类

  • 13.2.1 地址的表示

    • Internet上的主机有两种方式表示地址:
    1.域名
    例如 www.tsinghua.edu.cn
    2.IP地址
    例如 202.108.35.210
    java.net包中的InetAddress类对象含有一个Internet主机地址的域名和IP地址,例如 www.sina.com.cn/202.108.37.40 。
  • 13.2.2 获取地址
1.获取Internet上主机的地址
可以使用InetAddress类的静态方法getByName(String s);
获得一个InetAddress对象,该对象含有主机地址的域名和IP地址,该对象用如下格式表示它包含的信息:www.sina.com.cn/202.108.37.40
2.获取本地机的地址
我们可以使用InetAddress类的静态方法getLocalHost()获得一个InetAddress对象,该对象含有本地机的域名和IP地址。

13.3 套接字

  • 13.3.1 套接字

    • IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号被规定为一个16位的0~65535之间的整数。
    • 当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号与IP地址的组合得出一个网络套接字)。
  • 13.3.2 客户端套接字
    • 客户端的程序使用Socket类建立负责连接到服务器的套接字对象。
    • 建立连接到服务器的套接字对象:
    try{  Socket mysocket=new Socket(“http://192.168.0.78”,1880);
     }
    catch(IOException e)
    {}
    与mysocket相关的方法
    
    getInputStream()获得一个输入流
    getOutputStream()获得一个输出流
    • getInputStream()得到的输入流接到另一个DataInputStream数据流上
    • getOutputStream()得到的输出流接到另一个DataOutputStream数据流上
  • 13.3.3 ServerSocket对象与服务器端套接字
    • 服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接的目的。
      建立ServerSocket对象:
    try22{  ServerSocket  serverForClient =new ServerSocket(2010);
    }
    catch(IOException e){} 
    • 使用方法accept()将客户的套接字和服务器端的套接字连接起来,代码如下所示:
    try{  Socket sc= serverForClient .accept();
    }
    catch(IOException e){} 
    • 所谓“接收”客户的套接字连接就是accept()方法会返回一个和客户端Socket对象相连接的Socket对象。
    • 客户端的套接字获得的输入\输出流和服务器端的套接字获得的输出\输入流互相连接.
  • 13.3.4 使用多线程技术
    • 为了防止堵塞线程,服务器端收到一个客户的套接字后,就应该启动一个专门为该客户服务的线程。
    • 在Example13_4中,客户使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象需调用public void connect(SocketAddress endpoint) throws IOException请求和参数SocketAddress指定地址的套接字建立连接。
    • 为了使用connect方法,可以使用SocketAddress的子类InetSocketAddress创建一个对象,
      InetSocketAddress的构造方法是:
    InetSocketAddress(InetAddress addr, int port)

13.4 UDP数据报

  • 基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。
  • 基于UDP通信的基本模式是:
    • 1.将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地。
    • 2.接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容。
  • 13.4.1 发送数据包
    • 1.用DatagramPacket类将数据打包,即用DatagramPacket类创建一个对象,称为数据包。用DatagramPacket的以下两个构造方法创建待发送的数据包:
    DatagramPacket(byte data[],int length,InetAddtress address,int port)
    DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
    • 2.用DatagramSocket类的不带参数的构造方法:DatagramSocket()创建一个对象,该对象负责发送数据包。例如:
    DatagramSocket mail_out=new DatagramSocket();
    mail_out.send(data_pack);
  • 13.4.2 接收数据包
    • 首先用DatagramSocket的另一个构造方法DatagramSocket(int port) 创建一个对象,其中的参数必须和待接收的数据包的端口号相同。
    • 例如,如果发送方发送的数据包的端口是5666,那么如下创建DatagramSocket对象:
    DatagramSocket mail_in=new DatagramSocket(5666);
    • 然后对象mail_in使用方法receive(DatagramPacket pack)接受数据包。
    • 用 DatagramPack类的另外一个构造方法:DatagramPack(byte data[],int length)创建一个数据包,用于接收数据包,例如:
    byte data[]=new byte[100];
    int length=90;
    DatagramPacket pack=new DatagramPacket(data,length);
    mail_in.receive(pack);
    • 该数据包pack将接收长度是length字节的数据放入data。

13.5 广播数据报

  • 广播数据报涉及到地址和端口。
  • 广播数据报是一种较新的技术,要广播或接收广播的主机都必须加入到同一个D类地址。

13.6 Java 远程调用(RMI)

  • Java远程调用,RMI(Remote Method Invocation)是一种分布式技术,使用RMI可以让一个虚拟机(JVM)上的应用程序请求调用位于网络上另一处的JVM上的对象方法。习惯上称发出调用请求的虚拟机(JVM)为(本地)客户机,称接受并执行请求的虚拟机(JVM)为(远程)服务器。
  • 13.6.1 远程对象及其代理
    • 1.远程对象:驻留在(远程)服务器上的对象是客户要请求的对象,称作远程对象。
    • 2.代理与存根(Stub):
      • 代理的特点是它与远程对象实现了相同的接口。
      • 存根(Stub):一种特殊的字节码,并让这个存根产生的对象为作为远程对象的代理。
    • 3.Remote接口:
      • RMI为了标识一个对象是远程对象,即可以被客户请求的对象,要求远程对象必须实现java.rmi包中的Remote接口,也就是说只有实现该接口的类的实例才被RMI认为是一个远程对象。
  • 13.6.2 RMI的设计细节
    • 1.扩展Remote接口

      • 定义一个接口是java.rmi包中Remote的子接口,即扩展Remote接口。
    • 2.远程对象
      • 创建远程对象的类必须要实现Remote接口,RMI使用Remote接口来标识远程对象,但是Remote中没有方法,因此创建远程对象的类需要实现Remote接口的一个子接口。
    • 3.存根(Stub)与代理:RMI使用rmic命令生成存根
    • 4.启动注册rmiregistry: 执行rimregistry命令
    • 5.启动远程对象服务:远程服务器使用java.rmi包中的Naming类调用其类方法rebind(String name, Remote obj)绑定一个远程对象到rmiregistry所管理的注册表中,该方法的name参数是URL格式,obj参数是远程对象,将来客户端的代理会通过name 找到远程对象obj。
    • 6.运行客户端程序:远程服务器启动远程对象服务后,客户端就可以运行有关程序,访问使用远程对象。

代码托管

代码托管

原文地址:https://www.cnblogs.com/fzlzc/p/10852261.html

时间: 2024-10-21 16:33:19

20175214 《Java程序设计》第11周学习总结的相关文章

201521123045 <java程序设计>第11周学习总结

201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问) import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.Condition; class Account{ private int balance; private Lock lock = new

20172318 2016-2017-2 《Java程序设计》第一周学习总结

20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一些Java的基本命令,学会了会编译.运行.调试简单的Java程序 教材学习中的问题和解决过程 问题1:教程有很多专有词汇,有时候实际操作完全不会 问题1解决方案:问舍友和课代表解决大部分问题,剩下的靠百度 代码调试中的问题和解决过程 问题1:写了个小程序发现无法上传 问题1解决方案:没有用cd链接 问题2:使

20165208 2017-2018-2 《Java程序设计》第九周学习总结

20165208 2017-2018-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十三章 URL类 URL对象包含三部分信息:协议.地址和资源 创建URL对象两种方法: public URL (String spec) throws MalformedURLException public URL(String protocol,String host,String file) throws MalformedURLException 使用字符串初始化一个URL对象URL ur

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145201 《Java程序设计》第一周学习总结

# 20145201 <Java程序设计>第一周学习总结 ## 教材学习内容总结 万事开头难,终于开始学习了Java.寒假的时候看到老师的要求确实有点慌,但是这周翻开书,从书本知识第一行学起,发现并不是自己想想中那么难,只要一步一个脚印,每周有自己的计划,并按照计划按部就班的完成,最后一定会拥有自己的小成果的. 1.1Java不只是语言 Java经过多年的版本更新后,最新的版本是Java SE8. 在java发展的过程中,它的应用领域越来越广,根据不同级别的应用开发区分了不同的应用版本,最终j

20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 <Java程序设计>第一周学习总结 教材学习内容总结 转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好.可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识.第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了

20145224-陈颢文 《Java程序设计》第一周学习总结

20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大平台,其中Java SE是基础.Java的一大特点是它可以跨平台,而JVM对Java的跨平台提供了支持,它就类似于一个虚拟机,只要在当前平台安装了相应的JVM,Java程序就有了可以在此平台上运行的基础啦.JRE是Java的执行环境,在安装了JRE的计算机上就可以运行Java的程序了,当然光是可以跑代码对于程

20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不需接触底层数据库驱动程序的差异性. 本章,我们需要了解JDBC与API使用和概念,我们先要认识应用程序如何与数据库进行沟通,数据库本身是一种独立运行的应用程旭,程序员撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增加删除以及查找. 通常应用程序会利用一组专门与数据库进行通信协议的链接库,以简化

20145326《Java程序设计》第二周学习总结

20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型.变量.运算符.流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础.虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性. 1. 类型 在java的世界中,并非每个东西都

20145201 《Java程序设计》第一周学习总结(修改)

# 20145201 <Java程序设计>第一周学习总结 ## 教材学习内容总结 万事开头难,终于开始学习了Java.寒假的时候看到老师的要求确实有点慌,但是这周翻开书,从书本知识第一行学起,发现并不是自己想想中那么难,只要一步一个脚印,每周有自己的计划,并按照计划按部就班的完成,最后一定会拥有自己的小成果的. 1.1Java不只是语言 Java经过多年的版本更新后,最新的版本是Java SE8. 在java发展的过程中,它的应用领域越来越广,根据不同级别的应用开发区分了不同的应用版本,最终j