Java se da cuenta de la comunicación en red (programación TCP)


Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia

1. ¿Qué es la programación de redes TCP?


La programación de red TCP se refiere al uso de la clase Socket para escribir programas de comunicación.
Los programas que utilizan el protocolo TCP para comunicarse son primarios y secundarios, uno se llama programa del lado del servidor y el otro programa del lado del cliente .


2. Principios de la programación de redes TCP:

1. Icono:

Inserte la descripción de la imagen aquí

2. Análisis del lado del cliente y del lado del servidor:

La esencia de Socket es abstraer datos en flujos de E / S y transmitir
sockets de datos entre redes : el punto final de la comunicación entre dos máquinas

Lado del servidor : puede escribir datos al cliente, leer los datos enviados por el
cliente cliente : puede leer los datos enviados por el servidor, escribir datos al servidor

Herramientas utilizadas:
Lado del servidor: ServerSocket
Crear objeto : ServerSocket (puerto int)
Este método crea un socket de servidor vinculado a un puerto específico. El
puerto de parámetro es el número de puerto , que usted define, dividido por 0 ~ 1024 y el software instalado está ocupado por defecto Número de puerto diferente
al método de llamada del número de puerto: Socket (tipo de valor de retorno) accept ()
Este método escucha y recibe la conexión de este socket

Cliente:
Objeto de creación de socket : Socket (String host, int port) El
parámetro host es la dirección IP y el puerto es el número de puerto.
Este método crea un socket de flujo y lo conecta al número de puerto en el host especificado.
Método de llamada : Clase InputStream El método getInputStream ()
Este método puede devolver el flujo de entrada de este conector
                  El método getOutputStream () en
la clase OutputStream Este método puede devolver el flujo de salida de este conector

3. Cómo usar la ventana de DOS para verificar su propia dirección IP:

①Abre la ventana del administrador de cmd

Presione la tecla win + r para iniciar rápidamente la ventana de comandos, ingrese cmd para abrir la interfaz de administrador
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

②Introduzca el comando para ver la dirección IP

Ingrese el comando ipconfig para obtener la información de la dirección de la máquina, e IPv4 es la dirección IP de la máquina.
Inserte la descripción de la imagen aquí


3. Prueba de caso de comunicación de red:

1. Clase del lado del servidor:

package dreamfly.net.server;

//读取客户端发来的数据,给客户端写出数据

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    
    

    public static void main(String[] args) throws IOException {
    
    

        //1.开启服务器,参数是指开着的端口号
        ServerSocket server = new ServerSocket(8899);
        System.out.println("服务器已成功启动");
        //2.接收客户端发来的连接
        Socket socket = server.accept();
        System.out.println("接收到客户端发来的请求");
        //3.获取读取流
        InputStream in = socket.getInputStream();
        //4.读取数据
//        int data = in.read();      //默认返回的是整数
        for (int i = 0;i < 5;i++){
    
    
            char data = (char)in.read();
            System.out.print(data);
        }
        //5.给客户端写出数据
        System.out.println();
        OutputStream out = socket.getOutputStream();
        out.write("world".getBytes());
        System.out.println("服务器端成功发送数据");
        out.close();
    }
}

Para ejecutar cuando se lanza por primera vez al método IOException o usar el bloque de declaración try / catch, puede ocurrir una excepción de declaración rodeada , donde elegí el primer lanzamiento IOException, seguido de declaraciones de salida en la clase del lado del servidor para detectar si el envío es exitoso . la declaración de salida no se ejecuta, significa que los datos no se han enviado correctamente.

2. Clase de cliente:

package dreamfly.net.client;

//读取服务器端发来的数据,给服务器端写出数据

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
    
    

    public static void main(String[] args) throws IOException {
    
    
        //1.连接到指定的服务器(ip+port)
        Socket socket = new Socket("127.0.0.1",8899);
        System.out.println("已连接成功");
        //2.获取写出流
        OutputStream out = socket.getOutputStream();
        //3.写出数据,字节流只能写出整数或字节数组
        //将hello对应整数编程对应的字节数组,getBytes()将String转换为byte[]
        out.write("hello".getBytes());
        System.out.println("客户端成功发送数据");
        InputStream in = socket.getInputStream();
        for (int i = 0;i < 5;i++){
    
    
            char data = (char)in.read();
            System.out.print(data);
        }
        System.out.println();
        System.out.println("成功接收服务器端数据");
        out.close();
    }
}

4. Resultados de la operación:

1. Encienda el servidor

Inserte la descripción de la imagen aquí

2. Abra el cliente

Resultados de ejecución del lado del servidor:
Inserte la descripción de la imagen aquí

Resultados de ejecución del cliente:
Inserte la descripción de la imagen aquí

3. Asuntos que requieren atención:

El orden de operación es: primero abra el servidor y luego ejecute el cliente. El
flujo de bytes de OutStream solo puede escribir números enteros o matrices de bytes . Para transmitir datos de cadena, use el método getBytes () para convertir datos de cadena en bytes [] matriz de bytes

Si el cliente se enciende sin el servidor encendido, se producirán los siguientes resultados operativos:
Inserte la descripción de la imagen aquí
Motivo: debido a que el número de puerto del servidor no está abierto, el cliente no puede conectarse al puerto correspondiente del servidor.


Cinco, resumen

Lo anterior es el contenido de la comunicación de red simple en Java, y se adjunta la descripción de las clases utilizadas en este artículo en la API.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_48455576/article/details/113197775
Recomendado
Clasificación