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

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

目录

  • 学习过程遇到的问题及总结
  • 教材学习内容总结
    • 第13章 Java网络编程
  • 代码托管
  • 代码统计

学习过程遇到的问题及总结

  • Q1:运行课本例子4时,代码中为汉字,但同样的输出的字符为乱码。

  • 解决方法:检查后发现,使用的编码方式不一致,其他源文件使用的是GBK,而运行的Client4使用的是UTF-8,将这个源文件也改为GBK编码,就可以正确运行了。
  • Q2:运行课本例子4后又运行例子3时,提示以下问题。

  • 解决方法:我猜测可能是运行的例子4堵塞了进程,于是就将前面所有的运行程序都关掉,之后就可以正常运行例子3了。
  • Q3:运行Java远程调用的相关例子时,出现以下错误

  • 解决方法:IDEA中提示应该将所有类都方法sever包中,但我放进去之后还是不能正常编译,后来我尝试将ClientApplication类也放在sever包中,就可以正常运行了。

返回目录

教材学习内容总结

第13章 Java网络编程

13.1 URL类

  • URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对象的应用程序称作客户端程序。
  • 一个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
  • 读取URL中的资源:调用InputStream openStream()方法返回一个输入流。

13.2 InetAdress类

  • 地址的表示:域名和IP地址
  • 获取Internet上主机的地址:

    1.使用InetAddress类的静态方法getByName(String s)将一个域名或 IP 地址传递给该方法的参数 S,获得一个 InetAddress 对象;

    1. public String getHostName()获取InetAddress对象所含的域
    2. public String getHostAddress()获取InetAddress对象所含的IP地址
  • 获取本地机的地址:

    可以使用InetAddress类的静态方法getLocalHost()获得一个InetAddress对象,该对象含有本地机的域名和IP地址。

13.3 套接字

  • 当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号和IP地址的组合得出一个网络套接字)。
  • Socket类的构造方法:
    Socket(String host, int port)

    参数host是服务器的IP地址,port是端口号。

    //建立连接到服务器的套接字对象
    try { Socket clientSocket = new Socket("http://192.168.0.78",2010);
    }  //(IP,端口号)
    catch(IOException e) {}
  • ServerSocket 的构造方法:
    ServerSocket(int port)

    其中port 是一个端口号。

//建立ServerSocket对象
try{ ServerSocket serverForClient = new ServerSocket(2010);
}//(端口号)
catch(IOException e) {}

//使用accept()方法将客户端和服务器端套接字连接起来
try{ Socket sc = serverForClient.accept();
}
catch(IOException e) {
  • 可以使用方法accept()将客户端的套接字和服务器端的套接字连接起来。
  • 从套接字连接中读取数据与从文件中读取数据有着很大的不同,从文件中读取数据时,所有的数据都已经在文件中了,而使用套接字连接时,可能在另一端数据发送之前,就已经开始读取了。
  • 注意:accept方法也会阻塞线程的执行,直到接收到客户的呼叫。
  • 使用多线程技术
    • 为了防止堵塞线程,服务器端收到一个客户的套接字后,就应该启动一个专门为该客户服务的线程。
    • 使用InetSocketAddress创建一个对象,以connect。
  • 套接字通信基本原则:
    • 服务器应当启动一个专门的线程,在该线程中和客户的套接字建立连接。
    • 由于套接字的输入流在读取信息时可能发生阻塞,客户端和服务器端都需要在一个单独的线程中读取信息。

13.4 UDP数据报

  • 套接字是基于TCP协议的网络通信。
  • UDP的信息传递更快,但不提供可靠性保障,即无法知道数据能否正确到达目的地,也不能确定数据到达目的地的顺序是否和发送的顺序相同。
  • 基于UDP通信的基本模式:
    • 将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地。
    • 接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容。
  • 用DatagramPacket的以下两个构造方法创建待发送的数据包:
    DatagramPacket(byte data[],int length,InetAddtress address,int port)
    DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)

    方法DatagramSocket()负责发送数据包。

    方法receive(DatagramPacket pack)负责接收数据包。

13.5 广播数据报

  • 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类地址。

  • D类地址不是用来你代表位置的,即在网络上不能使用D类地址去查找计算机。

13.6 Java远程调用

  • RMI是一种分布式技术,使用RMI可以让一个虚拟机上的应用程序请求调用位于网络上另一处虚拟机上的对象。
  • 代理的特点是它与远程对象实现了相同的接口。
  • 存根是一种特殊的字节码,并让这个存根产生的对象作为远程对象的代理,其字节码后缀为"_Stub"。
  • 远程对象必须实现java.rmi包中的Remote接口。
  • 代理的特点是它与远程对象实现了相同的接口
  • RMI的设计细节
    • RMI使用rmic命令生成存根
    • 执行rimregistry命令
    • 启动远程对象服务
    • 运行客户端程序

返回目录

代码托管

码云链接

代码统计

返回目录

原文地址:https://www.cnblogs.com/sunxiaoxuan/p/8971908.html

时间: 2024-10-10 15:34:28

20165318 2017-2018-2 《Java程序设计》第九周学习总结的相关文章

马凯军201771010116《面向对象与程序设计Java》第九周学习总结

一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3.程序中出现的常见的错误和问题有:用户输入错误.设备错误.物理限制.代码错误. 4.Java把程序运行时可能遇到的错误分为两类: (1)非致命异常:通过某种修正后程序还能继续执行.这类错误叫作异常.如:文件不存在.无效的数组下标.空引用.网络断开.打印机脱机.磁盘满等. Java中提供了一种独特的处

201621123041java程序设计第九周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至少2种在List中删除元素的方法. 本题实验要注意使用split语句时,如果要求一个或多个空格为分隔符时,要使用line.split(" +"); 可以使用remove函数来删除元素,也可以使用迭代器iterator的方法. 2. 统计文字中的单词数量并按出现次数排序(题集题目) 2.1 伪代码(不得复制代

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

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

2017面向对象程序设计(Java)第二周学习总结

2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为第一周学长正在家里吃西瓜吹空调.好了,闲言少叙.我先为你们介绍一下助教的职责,而后再对你们的学习情况进行总结! 身为你们本学期Java课程的助教...之一,我的任务是:指导你们学习,批改我所负责学习小组的实验作业.阅读博文并回复.其他学习小组会有另外三位助教负责.由于我们每周五都会汇总你们的情况,其

20145311 《Java程序设计》第九周学习总结

20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connectivity)是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性. 厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: ·Type 1:JDBC-ODBC Bridge Driver·Type 2:Native API

20165329 《Java程序设计》第九周学习总结

20165329 <Java程序设计>第九周学习总结 教材学习内容总结 第十二章 URL类 构造方法1 try { URL url = new URL("http://www.google.com"); } catch(MalformedURLException e) { System.out.println("Bad URL:"+url); } 构造方法2:用public URL(String protocol,String host,String f

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

20165235 祁瑛 2018-4 《Java程序设计》第九周学习总结

20165235 祁瑛 2018-4 <Java程序设计>第九周学习总结 教材学习内容总结 URL类 UR类是java.net包中的一个重要类,使用URL创建的对象的应用程序称作称作客户端程序. 一个URL类用如下的构造方法来创建一个类: public URL(String spec) throws MalformedURLException URL创建的对象是http协议,所包含的资源是默认的资源(主页) URL对象可以通过调用InputStream openStream()方法可以返回一个

20165324 《Java程序设计》第九周学习总结

学号 20165324 <Java程序设计>第九周学习总结 教材学习内容总结 第十三章 Java网络编程 URL类 使用URL创建对象的应用程序称为客户端 一个URL对象封装一个具体资源的引用 一个URL对象包含最基本的三部分信息:协议,地址和资源. URL类的构造方法: 该构造方法使用字符串初始化一个URL对象URL url=new URL("http://www.google.com"); public URL(String protocol,String host,S