BIO bloqueo

La programación de red Java se puede dividir aproximadamente en BIO, NIO, AIO tres

El primer tipo de BIO se basa en la transmisión io tradicional, es un tipo de bloqueo.

Este es el cliente

Cliente de clase pública { 
    public static void main (String [] args) { 
        Scanner se = new Scanner (System.in); 
        System.out.println ("Ingrese el número de cliente:"); 
        int code = se.nextInt () ; 
        System.out.println ("El número de cliente es:" + código); 
        Socket socket = null; 

        intente 
        { 
            System.out.println ("Cliente" + código + "Comience a conectarse al servidor ..."); 
            socket = nuevo Socket ("127.0.0.1", 8888); 
            if (socket! = Null) { 
                System.out.println ("Cliente" + código + "¡Conéctese al servidor con éxito!"); 
            } 
            OutputStream out = socket.getOutputStream (); 
            while (verdadero) {
 
                System.out.println ("Cliente" + código + "Ingrese el contenido a enviar:");
               Cadena str = se.next (); 
               if (str.trim (). equalsIgnoreCase ("salir")) 
                   break; 
               out.write ((código + "--->" + str) .getBytes ("utf-8")); 
            } 
            out.close (); 
            socket.close (); 


        } catch (Exception ex) { 
            ex.printStackTrace (); 
        } 

    }

  Este es el servidor

Servidor de clase pública { 
    private int int port = 8888; 
    public static void main (String [] args) lanza IOException { 

        ServerSocket serverSocket = null; 
                intente { 
                    serverSocket = new ServerSocket (port); 
                    System.out.println ("El servidor comienza a escuchar : "+ Port); 
                    while (true) { 
                     var clientSocket = serverSocket.accept (); // El primer bloque 
                        System.out.println (" Aceptar una solicitud del cliente "); 
                        InputStream in = clientSocket.getInputStream (); 
                        int hasread = 0; 
                        byte [] bufer = nuevo byte [1024];
                        while ((hasread = in.read (bufer))! = - 1) {// 第二 处 阻塞
                            System.out.println ("客户 端 输入 字符 :" + new String (bufer, 0, hasread)); 
                        } 
                        clientSocket.close (); 
                        cercar(); 
                    } 

                } 
                catch (Exception ex) { 
                    ex.printStackTrace (); 
                } finalmente { 
                    try { 
                        serverSocket.close (); 
                    } catch (IOException e) { 
                        e.printStackTrace (); 
                    } 

                } 
    }

  El servidor se está bloqueando cuando escucha al cliente y lo recibe.

Ejecute el servidor por separado

 

 El programa se bloquea en el método de escucha.

Iniciar un cliente

 

 Mostrar conexión de servidor exitosa

 

 En este punto, el servidor tiene bloqueado la lectura del texto ingresado por el cliente

 

 En este momento, la comunicación es exitosa, pero el programa está en un ciclo continuo de espera.

En este momento, un cliente está activo y enviando contenido

 

 

 El servidor no puede recibir el contenido, porque bloquea la espera de que el cliente 1 envíe el contenido, en este momento el cliente 1 se cierra.

 

 

 

 El servidor recibe la información del cliente 2.

Entonces, esta BIO está bloqueando, si desea lograr que varios clientes envíen información al mismo tiempo. Necesita múltiples hilos.

 

Supongo que te gusta

Origin www.cnblogs.com/tomato190/p/12675202.html
Recomendado
Clasificación