Programación de red asincrónica en Java
Este artículo es útil para los programadores de Java que escriben aplicaciones cliente-servidor. 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, a menudo se requiere el procesamiento asincrónico de varios sistemas cliente / servidor, como el programa 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 ejecute el programa de servicio. iniciado Si el programa de servicio se detiene a mitad de camino mientras se ejecuta el programa cliente, también debe estar en una condición continua. A continuación, espere a que se ejecute el programa de servicio y se vuelva a conectar. p>
Las aplicaciones asíncronas de red implican los siguientes puntos clave
◇ Después de iniciar la aplicación cliente, detecte si la aplicación de servicio está Si existe, espere a que se inicie la aplicación de servicio sin bloquear la ejecución de otras tareas de la aplicación del cliente Una vez que se inicia la aplicación del servicio, la aplicación del cliente debe establecer una conexión con ella a tiempo. ◇ La aplicación del cliente y la aplicación del servicio deben poder detectar después de que la aplicación del servicio se cierra de manera anormal durante la comunicación de datos. La aplicación de servicio sale, la aplicación cliente borra automáticamente el enlace de comunicación y regresa al estado inicial, esperando que la aplicación de servicio se reinicie.
La programación asincrónica de la red primero involucra un temporizador y eventos del temporizador. continuo Detecta si la aplicación del cliente y la aplicación de servicio en la red están conectadas. Al mismo tiempo, cuando la aplicación de servicio encuentra una anomalía, la comunicación de datos finaliza y vuelve al estado inicial. Las fallas de red se pueden conocer mediante el manejo de excepciones. el método de red.
El temporizador está incluido en la clase de comunicación de red. Esto hace que la aplicación que utiliza esta clase no sea consciente de la existencia del temporizador y pueda procesar cómodamente la información de la red.
p>
La clase de programa cliente tiene la siguiente estructura public class NetComm ? implementa ActionListener{? javax swing Timer timer = new javax swing Timer( this);?private EventNotifier en;public static int net_state = ;InetAddress ServerAddr ;int ServerPort;? public NetComm(InetAddress addr int port){? ServerAddr = addr? = puerto;
public void NetComm_Init() {? Socket(ServerAddr ServerPort);? } catch (IOException e) {? net_state = ;? }? timer start() ;}? public void NetComm_Data(){? BufferedWriter? (nuevo OutputStreamWriter(outputstream)); salida de escritura( java por ghf@china );? salida de flujo()
? ; booleano más = verdadero;? mientras (más) {? Cadena cadena = en readLine(); si (cadena == nulo) más = falso;?
? // ¿Procesar datos? println(str);? } in close();
? catch (IOException e) {? NetComm_Close();? );? } public void NetComm_Close()? {? si(calcetín! = nulo)? if(net_state == )? NetComm_Init();? else? NetComm_Data();? }}
En el programa anterior, también se puede proporcionar una función de devolución de llamada para que las aplicaciones externas notifiquen cuando la red es anormal. o se pueden volver a la normalidad clases de comunicación de red similares de aplicaciones de servicios de aplicaciones en la misma clase lishixinzhi/Article/program/Java/hx/201311/27252
.