Red de conocimiento del abogados - Bufete de abogados - Programación de red asincrónica en Java

Programación de red asincrónica en Java

Este artículo es de cierta ayuda para los programadores de Java que escriben aplicaciones cliente-servidor y puede resolver el problema de que el programa continúe ejecutándose de manera estable cuando la otra parte falla. En la actualidad, la plataforma Java se ha utilizado ampliamente en la programación real de varios sistemas cliente/servidor, que a menudo requieren un procesamiento asincrónico de la red, como los programas cliente. Si el programa cliente se ejecuta antes que el programa de servicio, el programa cliente debe conectarse automáticamente al programa de servicio después de que se inicie el programa de servicio. Si el programa de servicio se detiene en medio del programa cliente, también debe esperar a que se ejecute el programa de servicio y volver a conectarse sin detenerse. A continuación se proporciona un método de programación asincrónica.

Las aplicaciones asincrónicas de red implican los siguientes puntos clave.

◇Después de iniciar la aplicación cliente, detecte si la aplicación de servicio existe. Si no está presente, espere a que se inicie la aplicación de servicio sin bloquear la ejecución de otras tareas de la aplicación cliente. Una vez que se inicia la aplicación de servicio, la aplicación cliente debería establecer rápidamente una conexión con ella. Después de que la aplicación de servicio se cierra de forma anormal durante la comunicación de datos, la aplicación cliente debería poder detectar la salida de la aplicación de servicio. Al mismo tiempo, la aplicación cliente borrará automáticamente el enlace de comunicación y volverá al estado inicial para esperar el servicio. aplicación para reiniciar.

La programación asincrónica de la red implica primero temporizadores y eventos de temporizador. El temporizador se utiliza para detectar continuamente si la aplicación cliente y la aplicación de servicio están conectadas en la red. Al mismo tiempo, cuando ocurre una excepción en la aplicación de servicio, la comunicación de datos se detiene y se devuelve al estado inicial. Las fallas de la red se pueden conocer mediante el manejo de excepciones en los métodos de red.

El temporizador está incluido en la clase de comunicación de red, por lo que las aplicaciones que utilizan esta clase no pueden percibir la existencia del temporizador y no pueden procesar convenientemente la información de la red.

La clase del programa cliente tiene la siguiente estructura: ¿Clase pública NetComm? Implementar ActionListener{? Temporizador de swing javax Temporizador = nuevo Temporizador de swing javax (este);? calcetín de socket; notificador de eventos privado en; público estático int net_state = inetAddress ServerAddrint ServerPort? public NetComm(dirección int puerto int){? DirecciónServidor=dirección? ¿Puerto del servidor? =puerto;}

public void NetComm_Init() {? estado_net=;? Intentar {? calcetín = nuevo Socket (puerto del servidor dirección del servidor);? } captura (IOException e) {? estado_net=;? }?Inicio del temporizador();}?public void NetComm_Data(){? Intentar {? flujo de salida flujo de salida = sock get flujo de salida(); escritor almacenado en búfer = ¿nuevo escritor almacenado en búfer? (nuevo escritor de flujo de salida (flujo de salida)); escritura de salida (Java por ghf @ China); fuera de color();

? BufferedReader en = nuevo BufferedReader? (new InputStreamReader(sock getInputStream()); booleano more = true? while (more) {? string str = in readLine();? if (str == null) more = false;? ¿De lo contrario? // ¿Procesar datos? Sistema salida println(str);? } en close();

? } catch (IOException e) {? NetComm _ Close() ? ? Intente {? calcetinesclose();?} acción nula pública realizada (ActionEvent e)? ?if(net_state ==)? p>En el programa anterior, también puede proporcionar una función de devolución de llamada para notificar a la aplicación. Las aplicaciones de servicio pueden colocar la clase de comunicación de red en la misma clase cuando la red es anormal o vuelve a la normalidad.

Lishi Xinzhi/Article/program/Java/hx/201311/27252