Única instancia con ServerSocket en Java

Hola a todos, hoy os voy a explicar como podemos tener una sola instancia de un programa en  Java.

Es normal que si tenemos una aplicación queramos que no se ejecute varias veces para evitar problemas al tener varias instancias.

Se puede hacer de varias formas, en este manual, vamos a explicar como hacerlo con ServerSocket.

 

La idea es que la primera vez que se ejecuta se inicie un servicio que escuche en un puerto, entonces, cuando intentemos arrancar otro proyecto no nos dejará, ya que el puerto estaría ocupado por la primera instancia.

¿Como lo podemos hacer? Fácil.

Creamos un proyecto y me creo un JFrame.

 


public class Ventana extends javax.swing.JFrame {

    public Ventana() throws IOException {
        initComponents();
        
        // El puerto puede ser el que queramos
        ServerSocket s = new ServerSocket(6200);
      
    }

    public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    new Ventana().setVisible(true);
                } catch (IOException ex) {
                    Logger.getLogger(Ventana.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }
}

Veamos el resultado:

No pasa nada porque dé error.

Os dejo aquí para que os descarguéis el proyecto de netbeans.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *