Notas detalladas sobre la introducción de la programación en red basada en Java

Primeros conocimientos de programación de redes.

Tres elementos de la programación de redes

IP

  • La dirección del dispositivo en la red es un identificador único.

el número de puerto

  • El identificador único de la aplicación en el dispositivo.

protocolo

  • Reglas para la transmisión de datos en la red. Los protocolos comunes incluyen UDP, TCP, http, https y ftp.

El uso de la interfaz api de la clase InetAddress

inserte la descripción de la imagen aquí


Modelo de transmisión de red

  • Modelo de referencia OSI: estándar mundial de protocolo de Internet, especificación de comunicación global, un modelo único es demasiado idealista y no se ha promocionado ampliamente en Internet
  • Modelo de referencia TCP/IP (o protocolo TCP/IP): el estándar internacional de facto.

inserte la descripción de la imagen aquí


Modelo TCP/IP de cuatro capas

inserte la descripción de la imagen aquí


protocolo de transporte de red

En las redes informáticas, las reglas de conexión y comunicación se denominan protocolos de comunicación de red.

protocolo UDP

  • Protocolo de datagramas de usuario (User Datagram Protocol) UDP es un protocolo de comunicación sin conexión.
  • alta velocidad,límite de tamañoEnvíe hasta 64K a la vez, los datos no son seguros y fáciles de perder

Al protocolo UDP no le importa si las partes emisoras y receptoras se han conectado con éxito, solo envía


Protocolo TCP

  • Protocolo de control de transmisión TCP (Protocolo de control de transmisión) El protocolo TCP es un protocolo de comunicación orientado a la conexión .
  • Velocidad lenta, sin límite de tamaño, seguridad de datos.

El protocolo TCP primero confirmará si el remitente y el receptor están conectados correctamente y luego enviará


UDP

Programa de comunicación UDP

enviar datos

    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();
    }

Recibir datos

    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();
    }

Nota: Primero ejecute el código para recibir datos y luego ejecute el código para enviar datos, de lo contrario, los datos enviados no se pueden recibir


Tres métodos de comunicación de UDP

①Unicast Transmisión de datos uno a uno, correspondencia uno a uno entre
el remitente y el receptor


②Multidifusión El destinatario es un grupo y envía información a un grupo de computadoras

inserte la descripción de la imagen aquí


El ejemplo es el siguiente

remitente

inserte la descripción de la imagen aquí

Extremo de recepción

inserte la descripción de la imagen aquí


③Broadcast Enviar datos a todas las computadoras en la LAN ,
La dirección de transmisión es única para UDP
inserte la descripción de la imagen aquí


TCP

Protocolo de comunicación TCP

El protocolo de comunicación TCP es un protocolo de red confiable. Necesita establecer una comunicación de objeto Socket en ambos extremos de la comunicación antesAsegúrese de que la conexión esté establecida

Genere flujos de E/S a través de Socket para la comunicación de red

El siguiente es el código implementado en idea usando TCP para la comunicación

cliente

    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();
    }

Servidor

    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();
    }

Apretón de manos TCP de tres vías

Asegúrese de que la conexión esté establecida

inserte la descripción de la imagen aquí


Las cuatro ondas de TCP

Asegúrese de que la conexión esté desconectada y los datos se procesen, razón por la cual el protocolo TCP es confiable

inserte la descripción de la imagen aquí

Esto es para confirmar si el servidor ha procesado los datos y la desconexión se confirmará después del procesamiento.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí


Supongo que te gusta

Origin blog.csdn.net/giveupgivedown/article/details/129012189
Recomendado
Clasificación