sigo posteando cosas y más cosas.
Tengo un problemón.
Cuando creo un jForm, y en el utilizo SOCKETS, el jForm se paraliza.
PROBLEMA 1
pasa lo siguiente:
- Inicio el programita.
- Aparece un jForm con un boton que dice "Conectar".
- Lo que hace ese boton es enlazar un ServerSocket a un puerto.
- además, en ese botón viene la función de quedarse esperando al cliente, y es en este punto donde el jForm se queda pegado. No deja escribir ni cerrar ni nada, solo cuando recive la conexión ya vuelve a trabajar.
PROBLEMA 2.
-En la clase "Conectar" vienen las funciones con la opción de
System.out.println("");
con esto me imprime todo lo quese indica en la parte de consolo de NetBeans.
- Pero cuando trato de imprimir eso en un jTextArea o cualquiera objeto gráfico, no lo hace.
Código:
import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.SwingUtilities; public class Server extends javax.swing.JFrame { /** Creates new form Server */ public Server() { initComponents(); } conectar con = new conectar(); @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane1.setViewportView(jTextArea1); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE) .addComponent(jButton1)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE) .addComponent(jButton1) .addGap(21, 21, 21)) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { conectar.Enlazar(); conectar.esperarConexion(); conectar.obtenerFlujos(); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Server().setVisible(true); } }); } public void Imprimir(final String texto) { SwingUtilities.invokeLater( new Runnable() { public void run() { jTextArea1.setText(texto); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; // End of variables declaration }
Código:
import java.io.BufferedReader; import java.io.EOFException; import java.io.IOException; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author CARLOS DAVID MUÑOZ */ public class conectar { private static ObjectOutputStream salida; private static ObjectInputStream entrada; private static ServerSocket servidor; private static Socket conexion; private static String mensaje; static Server ser = new Server(); public static void Enlazar(){ try { servidor = new ServerSocket(12345); System.out.println("Enlazado al puerto"); ser.Imprimir("Enlazado al puerto"); } catch (IOException ex) { Logger.getLogger(conectar.class.getName()).log(Level.SEVERE, null, ex); } } public static void esperarConexion(){ System.out.println("Esperando conexión"); try { conexion = servidor.accept(); // permitir al servidor aceptar la conexión System.out.println("Conexión recibida de: " + conexion.getInetAddress().getHostName()); } catch (IOException ex) { Logger.getLogger(conectar.class.getName()).log(Level.SEVERE, null, ex); } } public static void obtenerFlujos(){ try { // establecer flujo de salida para los objetos salida = new ObjectOutputStream(conexion.getOutputStream()); salida.flush(); // vaciar búfer de salida para enviar información de encabezado entrada = new ObjectInputStream(conexion.getInputStream());// establecer flujo de entrada para los objetos System.out.println("\nSe recibieron los flujos de E/S\n"); } catch (IOException ex) { Logger.getLogger(conectar.class.getName()).log(Level.SEVERE, null, ex); } } }