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

Posted yhooyon

tags:

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

教材学习内容总结

第十三章

URL类

URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程序称作客户端程序。
一个URL对象通常包含最基本的三部分信息:协议、地址、资源。

URL的构造方法

URL类通常使用如下的构造方法创建一个URL对象:

  • public URL(String spec) throws MalformedURLException
  • public URL(String protocol, String host,String file) throws MalformedURLException

    读取URL中的资源

    URL对象调用:
    InputStream openStream()
    方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入到客户端。

    InetAdress类

    Internet上的主机有两种方式表示地址:
  • 域名
    例如 www.tsinghua.edu.cn
  • IP地址
    例如 202.108.35.210
    java.net包中的InetAddress类对象含有一个Internet主机地址的域名和IP地址,例如 www.sina.com.cn/202.108.37.40

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

    套接字

    IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号被规定为一个16位的0~65535之间的整数。
    当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号与IP地址的组合得出一个网络套接字)。

客户端套接字:
建立连接到服务器的套接字对象:

try{  Socket mysocket=new Socket(“http://192.168.0.78”,1880);
     }
    catch(IOException e)
    {  }

与mysocket相关的方法

  • getInputStream()获得一个输入流
  • getOutputStream()获得一个输出流
  • 用getInputStream()得到的输入流接到另一个DataInputStream数据流上
  • 用getOutputStream()得到的输出流接到另一个DataOutputStream数据流上

    ServerSocket对象与服务器端套接字

    服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接的目的。

建立ServerSocket对象:

try{  ServerSocket  serverForClient =new ServerSocket(2010);
      }
      catch(IOException e){}

使用方法accept()将客户的套接字和服务器端的套接字连接起来,代码如下所示:

try{  Socket sc= serverForClient .accept();
        }
       catch(IOException e){}

所谓“接收”客户的套接字连接就是accept()方法会返回一个和客户端Socket对象相连接的Socket对象。

使用多线程技术

使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象需调用
public void connect(SocketAddress endpoint) throws IOException
为了使用connect方法,可以使用SocketAddress的子类InetSocketAddress创建一个对象,InetSocketAddress的构造方法是:
InetSocketAddress(InetAddress addr, int port)

发送数据包
  • 用DatagramPacket类将数据打包,即用DatagramPacket类创建一个对象,称为数据包。
    用DatagramPacket的以下两个构造方法创建待发送的数据包:
DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
  • 用DatagramSocket类的不带参数的构造方法:DatagramSocket()创建一个对象,该对象负责发送数据包。例如:
DatagramSocket  mail_out=new DatagramSocket();
mail_out.send(data_pack);

代码托管

技术分享图片

上周考试错题总结

  • 错题1
    对于下列程序,哪个叙述是正确的? B
    A . JVM认为这个应用程序共有两个线程。
    B . JVM认为这个应用程序只有一个主线程。
    C . JVM认为这个应用程序只有一个thread线程。
    D . 程序有编译错误,无法运行。

  • 错题2
    下列关于守护线程的说法,正确的是 A B C D
    A . thread.setDaemon(true)必须在thread.start()之前设置,否则会报IllegalThreadStateException异常。
    B . 如果用户线程已经全部退出运行,只剩下守护线程存在,那么虚拟机也就退出了。
    C . 将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现 。
    D . 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

感悟

现在的java已经进阶到了网络编程了,需要花很多时间去理解一些从未遇到过的的问题和操作。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/4 10/10
第二周 300/500 1/5 10/20
第三周 800/1300 1/6 20/40
第四周 700/2000 2/8 20/60
第五周 1100/ 3100 2/10 30 /90
第六周 1100 /4200 1/ 11 15 /105
第七周 500/4700 3/14 20/125
第八周 800/5500 2/16 20/145
第九周 1100/6600 2/18 20/165
第十周
  • 计划学习时间:20小时

  • 实际学习时间:20小时

参考资料





























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

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

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

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

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

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

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