java基础 网络编程

一、计算机网络基础

1、计算机网络定义

把分布在不同区域的计算机与专门的外部设备通过通信线路连接成复杂的网络系统, 众多计算机之间可以方便的互相传输信息,数据共享

2、计算机网络主要功能:

资源共享

​ 信息传输与集中处理

​ 均衡负荷与分布处理

​ 综合信息服务

计算机之间需要数据传输,离不开网络通信协议,网络通信协议就是 双方在传输数据时的约定

3、网络通信协议定义:

计算机在数据传输时的通用标准 。约定了他们的传输速率,传输代码、代码结构,出错控制等标准。

​ 根据国际约束的协议分为网络通信协议的七层协议,按照实际应用也可分为四层协议

​ 七层从下往上 : 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

​ 四层协议从下往上: 物理+数据链路层 、网络层(IP层)、传输层、应用层
在这里插入图片描述
由于网络传输本身是比较复杂的过程,Java 对每一层进行封装,对每一层提供对应的API ,使我们在进行网络传输时不需要跟踪底层协议,只需对每一层提供的API掌握,同时数据传输的过程和 文件流一样操作,从而简化该过程。 所以网络传输会使用流、多线程的概念。

二、Java的网络编程

Java的网络编程包 java.net.*

网络层: 掌握网络IP 和 端口号 java.net.InetAddress \Inet4Address\Inet6Address

IP的定义: IP(Internet Protocol) 互联网协议, 在全球互联网范围内每一个IP地址表示一台独立的计算机(广域网内) ,IPv4由四个段组成,每一个段的数都从0-255
在这里插入图片描述
通过一个IP地址可以路由到唯一的计算机。

端口号(PORT): 一台计算机上可运行多个应用程序,通过端口号区分该计算机的指定应用程序, 同一个计算机下,不同应用程序,端口号一定不同。 端口号的范围(0-65535)

常用端口号 :
在这里插入图片描述

IP层的类:

java.net. InetAddress

常用方法

getLocalHost() : 获取本地IP对象

getHostAddress():获取IP地址

getHostName():获取计算机名

getAddress():获取ip地址的数组表现形式

static getByName(参数) :通过ip地址或计算机名 返回一个InetAddress对象

//确定主机名称的IP地址。
        // 获取本机    LocalHost 表示本机ip
        InetAddress inet = InetAddress.getLocalHost();
        System.out.println("主机地址:"+inet.getHostAddress());
        System.out.println("主机名:"+inet.getHostName());
        System.out.println("主机名IP数组:"+
                Arrays.toString( inet.getAddress()));
        // 也可以通过ip地址获取InetAddress对象
        InetAddress inet2= InetAddress.getByName("DESKTOP-346CK63");
        //获取ip地址
        System.out.println(inet2.getHostAddress());
        InetAddress inet3 = InetAddress.getByName("192.168.7.189");
        //获取计算机名
        System.out.println(inet3.getHostName());

        InetAddress inet4 = InetAddress.getByName("192.168.7.103");
        System.out.println("对方的计算机名:"+ inet4.getHostName());

URL类:

URL全称 统一资源定位符,用于访问互联网上的资源地址,也称为 网址,

完成的URL地址包括以下部分

协议名://ip地址:端口号/文件路径/文件名

例如: http://47.100.182.246:8080/robot/

协议名: http 、https、ftp协议

URL : url的路由对象

URLConnection : url的连接对象, 可获取输入流

常用方法:

getConnect() : 获取连接对象的内容

 URL url = new URL("https://www.baidu.com/");
        // 获取根据ip + 端口 + 协议  + 文件组成URL
      //  URL url2 = new URL("http","47.100.182.246",8080,"/robot");
           //获取连接  (与该地址的连接)
        URLConnection conn =  url.openConnection();
          // 获取这里的资源,首先需要获取输入流 ,下载远程资源相当于IO流操作
        InputStream is = conn.getInputStream();
        // 包装成一个字符流
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String str=null;
        while((str =br.readLine()) !=null){
            System.out.println(str);
        }

        br.close();

下载文件 案例

public static void main(String[] args) throws IOException {
        //https://zhuanlan.zhihu.com/p/285529011
        // 1、创建连接
        URL url = new URL("https://zhuanlan.zhihu.com/p/285529011");
        System.out.println(url);
        // 2、打开连接
       InputStream is =  url.openStream();
       // 定义文件输出流
        FileOutputStream fos = new FileOutputStream("d:/zhihu.html");
        byte [] b = new byte[1024];
        int len = 0;
        while( (len =is.read(b)) !=-1){
            fos.write(b,0,len);
        }
        System.out.println("文件下载 成功");
        fos.close();
        is.close();
    }

传输层(TCP/UDP)

传输层用于数据的传输,在数据传输过程中根据数据的可靠性可分为两类,

1、基于TCP的传输

​ TCP特点: 两台计算机之间建立可靠连接,基于Socket的通道一旦建立,则数据可通过字节流的方式传输到另一方, 安全的可靠协议 ,

在这里插入图片描述

2、基于UDP的传输

​ UDP特点: 它面向无连接的协议,不保证数据的可靠性,传播速度比较快

TCP和UDP的区别
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值