Java基础之网络编程介绍详尽笔记

初识网络编程

网络编程三要素

IP

  • 设备在网络中的地址,是唯一的标识。

端口号

  • 应用程序在设备中唯一的标识。

协议

  • 数据在网络中传输的规则,常见的协议有UDP、TCP、http、https、ftp。

InetAddress类的使用api接口

在这里插入图片描述


网络传输模型

  • OSI参考模型:世界互联协议标准,全球通信规范,单模型过于理想化,未能在因特网上进行广泛推广
  • TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。

在这里插入图片描述


TCP/IP四层模型

在这里插入图片描述


网络传输协议

计算机网络中,连接和通信的规则被称为网络通信协议

UDP协议

  • 用户数据报协议(User Datagram Protocol)UDP是面向无连接通信协议。
  • 速度快,有大小限制一次最多发送64K,数据不安全,易丢失

UDP协议不管发送接收两方是否已经连接成功,它只管发送


TCP协议

  • 传输控制协议TCP(Transmission Control Protocol)TCP协议是面向连接的通信协议。
  • 速度慢,没有大小限制,数据安全。

TCP协议会先确认发送方和接收方二者是否成功连接,再进行发送


UDP

UDP通信程序

发送数据

    public static void main(String[] args) throws IOException {
    
    
        //发送数据

        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();

        //2.打包数据
        String str = "hello world!";

        byte[] bytes = str.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 10086;//指定发送到哪个端口

        DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, port);

        //3.发送数据
        ds.send(packet);

        //4.释放资源
        ds.close();
    }

接收数据

    public static void main(String[] args) throws IOException {
    
    
        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket(10086);

        //2.接收数据包
        byte[] bytes = new byte[1024];//定义接收数据的数组
        //定义接收数据的容器
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
        ds.receive(packet);//该方法是阻塞的,程序执行到这一步的时候,会在这里死等等发送端发送消息

        //3.解析数据包
        //就是获取发送时封装的内容
        byte[] data = packet.getData();
        int len = packet.getLength();
        InetAddress address = packet.getAddress();
        int port = packet.getPort();

        System.out.println("接收该数据"+ new String(data,0,len ));
        System.out.println("该数据是从"+address+"这台电脑的"+port+"这个端口发出的");

        //4.关闭资源
        ds.close();
    }

注意:要先运行接收数据的代码,再运行发送数据的代码,否则,发送的数据接收不到


UDP的三种通信方式

单播
一对一传输数据,发送方和接收方一 一对应


组播
接收方为一组,给一组电脑发送信息
在这里插入图片描述


示例如下

发送端

在这里插入图片描述

接收端

在这里插入图片描述


广播
给局域网中的所有电脑发送数据,广播地址是UDP独有的
在这里插入图片描述


TCP

TCP通信协议

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象通信之前要保证连接已经建立

通过Socket产生IO流来进行网络通信

下面是idea中使用TCP做通讯实现的代码

客户端

    public static void main(String[] args) throws IOException {
    
    
        //TCP协议发送数据

        //1.创建Socket对象
        //细节:在创建对象的同时会连接服务端
        //     如果连接不上,代码会报错
        Socket socket = new Socket("127.0.0.1",10086);

        //2.从连接通道中获取输出流
        OutputStream os = socket.getOutputStream();
        //写出数据
        os.write("hello".getBytes());

        //3.释放资源
        os.close();
        socket.close();
    }

服务端

    public static void main(String[] args) throws IOException {
    
    
        //TCP协议, 接收数据

        //1.创建对象ServerSocker
        ServerSocket ss = new ServerSocket(10000);

        //2.监听客户端的连接
        Socket socket = ss.accept();

        //3.从连接通道中获取输入流读取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        int b;
        while ((b = br.read()) != -1){
    
    
            System.out.print((char) b);
        }

        //4.释放资源
        socket.close();
        ss.close();
    }

TCP的三次握手

确保连接建立

在这里插入图片描述


TCP的四次挥手

确保连接断开,且数据处理完毕,这就是为什么TCP协议可靠的原因

在这里插入图片描述

这里是为了确认服务端是否已经将数据处理完毕,处理完才会确认断开连接

在这里插入图片描述
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/giveupgivedown/article/details/129012189