Java面向对象程序设计 第十五章总结



1. 网络通信协议分为几层?各层解决的问题是什么?

  • 网络通信协议分为七层,后三层为面向用户提供应用服务的高层次通信协议
    • 物理层:通过物理电气接口实现互联设备间的比特形式的信息传输;
    • 数据链路层:网络相邻节点设备间二进制信息传输的数据通道,负责数据通道的建立和拆除;
    • 网络层:解决跨越多个链路的甚至不同网络设备之间的通信问题,是一种端到端的通信;
    • 传输层:解决处于不同网络设备间的通信传输、通信管理,对上层需要通信的数据信息分解为标准的数据单元,这些数据单元到达终端后能对这些数据单元进行重新排序和整合;
    • 会话层:为用户交互信息而按特点规律建立的连接,提供会话地址和会话管理服务;
    • 表示层:将会话层得到的数据转化为应用层可以理解的表达形式,或则将数应用层数据转化为会话层可以传输的形式;
    • 应用层:面向特定得到网络应用提供服务

2. TCP和UDP协议有什么不同,为什么称TCP是面向连接的可靠的协议?

  • TCP是面向应用的可靠的数据传输机制,而UDP是非可靠的数据传输机制,因为TCP在传输数据之前要进行“三次握手” 连接请求消息段 , 允许连接消息段,确认消息段,再传输时得到的是顺序无差错的数据流;
  • TCP可以按统一格式传输大量数据,而UDP传输数据必须在64KB以内;
  • TCP能确保接受方完全正确地获取发送方地全部数据,而UDP无法保证是否接收与顺序保证。

3. 在Java语言当中,网络编程是从协议的什么层次开始的?程序设计时,什么情况下选择Java高层次网络编程,什么情况下选择低层次网络编程?

  • Java网络编程是从传输层开始;
  • 基于应用层开发时使用高层次网络编程,基于传输层开发使用低层次网络编程。

##=## 4. Socket编程时,目的地址和端口号需要在什么地方指出?使用数据报时,又在什么地方指出?

  • Socket编程时,目的地址和端口在创建Scket对象时指出;
  • 使用数据报时,目的地址和端口在新建DatagramPacket对象时指出。

5.利用URLConnection对象编写程序返回某网站的首页,并将首页内容存放到文件当中。

package URL;

/**
 * @title URLConnection 读取网页资源并保存到文件
 * @author YEE686
 * @version 20.11.14
 */

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class URLConn {
    public static void main(String[] args) {
        URL baidu = null;
        try {
            baidu = new URL("https://www.baidu.com/");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        URLConnection con = null;
        try {
            con = baidu.openConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }


        BufferedReader in = null;
        try {
            in = new BufferedReader(
                    new InputStreamReader(con.getInputStream())
            );
        } catch (Exception e) {
            System.out.println("ERROR");
        }

        File file = new File("D:\\Sources\\JavaSource\\Homework15\\src\\URL\\file.txt");

        FileOutputStream out = null;
        try {
            out = new FileOutputStream(file);
        } catch (IOException e) {
            e.printStackTrace();
        }

        String str ;
        try {
            while ((str = in.readLine()) != null) {
                System.out.println(str);
                str+="\n";
                out.write(str.getBytes("UTF-8"));
                out.flush();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            in.close();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值