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

Posted besty-zyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165330 2017-2018-2 《Java程序设计》第9周学习总结相关的知识,希望对你有一定的参考价值。

课本知识总结

第十三章 Java网络编程

  1. URL类
  • URL类是java.net包中的一个重要的类
  • 一个URL对象包含的三个基本信息:协议、地址和资源
    • 协议:必须是URL对象所在的Java虚拟机支持的协议,常用的有:Http、Ftp、File协议,由参数protocol指定
    • 地址:必须是能连接的有效IP地址或域名,由参数host指定
    • 资源:可以是主机上的任何一个文件,由参数file指定
  • 构造方法
    • public URL (String spec) throws MalformedURLException
    • public URL(String protocol,String host,String file) throws MalformedURLException
  • 调用InputStream openStream()方法返回一个输入流
  1. InetAddress类
  • Internet上主机表示地址的两种方式
    • 域名
    • IP地址
  • 获取地址
    • 获取Internet上主机地址:getByName(String s)
    • 获取本地机地址:getLocalHost()
  1. 套接字
  • 是基于TCP协议的网络通信
  • 客户端套接字
    • 对象建立方法:使用Socket类
    • Socket构造方法:Socket(String host,int port)
  • ServerSocket对象与服务器端套接字
    • 构造方法:ServerSocket(int port)
  • 使用方法accept()将客户端的套接字和服务器端的套接字连接起来
try{ Socket sc = serverForClient.accept();
}
catch(IOException e) {}
  • 通信完毕后,套接字使用close()方法关闭套接字连接
  • 多线程技术
    • 服务器端收到一个客户端的套接字时,就会启动一个专门为该客户服务的线程
      技术分享图片
  • 套接字通信基本原则
    • 服务器应当启动一个专门的线程,在该线程中和客户的套接字建立连接
    • 由于套接字的输入流在读取信息时可能发生阻塞,客户端和服务器端都需要在一个单独的线程中读取信息
  1. UPD数据报
  • 基于UPD通信的基本模式
    • 将数据打包发往目的地
    • 接收发来的数据包并查看内容
  • 发送数据包
    • 打包:使用DatagramPacket类
DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
  • 发送:使用构造方法DatagramSocket()创建一个对象
  • 接收数据包
    • 使用构造方法DatagramSocket(int port)创建一个对象
    • 使用方法receive(DatagramPacket pack)接收数据包
  1. 广播数据报
  • A类地址:a<128,则b.c.d表示主机
  • B类地址:128<=a<192,则a.b表示网络地址,c.d表示主机地址
  • C类地址:a>=192,a.b.c表示网络地址,d表示主机地址
  • D类地址:224.0.0.0~224.255.255.255是保留地址
  • 要广播或接收广播的主机都必须加入到同一个D类地址
  1. RMI是一种分布式技术,使用RMI可以让一个虚拟机(JVM)上的应用程序请求调用位于网络上另一处JVM上的对象方法

遇到的问题及解决方法

  • 在运行本章第一个代码时出现技术分享图片

    解决方法:将两个程序分别打包在同一文件夹下,通过输入javac -encoding gbk Example13_1.java,然后成功编译并运行。

代码托管

技术分享图片

上周错题总结

  1. 技术分享图片

    解析:技术分享图片

  2. 技术分享图片

    解析:当main方法中没有创建其他的线程,main方法返回时,JVM就会结束Java应用程序;当main方法中创建了其他线程,要等到所有线程都结束,JVM才会结束Java应用程序

  3. 技术分享图片

    解析:C项:先前的实体会成为“垃圾”,并且不会被垃圾收集器收集。D项:当线程进入死亡状态后,线程就还可以调用isAlive()方法,并且返回值为false。


以上是关于20165330 2017-2018-2 《Java程序设计》第9周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

20165330 预备作业3 Linux安装及学习

20165330 我期望的师生关系