Programación de red asincrónica en Java
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