[SOLUCIONADO] Creando cliente envio de String con GUI.

Iniciado por algorf, Agosto 17, 2013, 08:45:12 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 17, 2013, 08:45:12 PM Ultima modificación: Agosto 27, 2014, 08:59:28 PM por Expermicid
Hola a todo UnderC0de, espero anden bien, paso a comentarles la situación.
Estoy comenzando a volver a programar un poco y bueno estaba haciendo un poco de ejercicios con la main y los dedos.

mas o menos vine así el proyecto .. es un cliente con interfaz grafica, por ahora va asi

Código: java

package client;

import java.awt.Color;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author
*/
public class clie extends javax.swing.JFrame {
    String conIP;
    int port;
    static byte activ=0;
    static String oracion;
    /** Creates new form clie */
    public clie() {
        initComponents(); //Inicializa los componetes.
    }

     static Socket clients;

    @SuppressWarnings("unchecked")

    private void btnConectActionPerformed(java.awt.event.ActionEvent evt) {                                         
        conIP = txtipconec.getText();
        port = Integer.parseInt(txtportconect.getText());
        activ++;
        try {
            clients = new Socket(conIP, port);
        } catch (UnknownHostException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                         

    private void txtenviarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        OutputStream msjenv = null;
        try {
            msjenv = clients.getOutputStream();
            DataOutputStream mnsj = new DataOutputStream(msjenv);
            mnsj.writeUTF(jTextArea1.getText());
        } catch (IOException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                msjenv.close();
            } catch (IOException ex) {
                Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }                                         

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) throws IOException {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run(){
                new clie().setVisible(true);
            }
        });
               InputStream mnsjre = clients.getInputStream();
               DataInputStream mnsjr = new DataInputStream(mnsjre);
               oracion = (String) mnsjr.readUTF();
    }

    // Variables declaration - do not modify
    private javax.swing.JButton btnConect;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JButton txtenviar;
    private javax.swing.JTextField txtipconec;
    private javax.swing.JTextField txtmnsj;
    private javax.swing.JTextField txtportconect;


las dudas son básicas, como por ejemplo como hacer para que la variable del Output se imprima en el jLabel2
y la entrada también me esta volviendo loco, me confunde cuando uso interfaz grafica.

estoy leyendo bastantes manuales. pero de java en general y no de la GUI. alguien podria darme una mano ? algunos consejos, o papers.. para que me guie un poco.

Espero que puedan darme una mano desde ya un gracias.
Saludos.

Agosto 24, 2013, 04:42:49 PM #1 Ultima modificación: Agosto 28, 2013, 03:01:36 PM por algorf
Bueno no eh podido recibir ayuda pero sin embargo, me puse a leer unos apuntes que dejaron por el foro y le encontre la vuelta.. pude enviar el fucking String..  y pude mostrar los textos .. dejo el String

Código: java
package client;

import java.awt.Color;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author
*/
public class clie extends javax.swing.JFrame {
    String conIP = "localhost";
    int port=5000;
    static String oracion;
    static Socket clients;
    int habilitarec = 0;
   
    public clie() {
        initComponents(); //Inicializa los componetes.
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
 
    void conect(){
        try {
            clients = new Socket(conIP, port);
        } catch (UnknownHostException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    private void btnConectActionPerformed(java.awt.event.ActionEvent evt) {                                         
    conect();
    }                                         
void recstr(){
        InputStream strrec = null;
        try {
            String mnsjhabla;
            strrec = clients.getInputStream();
            DataInputStream datastrrec = new DataInputStream(strrec);
            mnsjhabla = datastrrec.readUTF();
            txtmnsjrec.setText(mnsjhabla);
        } catch (IOException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                strrec.close();
            } catch (IOException ex) {
                Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }
    private void btnenviarActionPerformed(java.awt.event.ActionEvent evt) {                                         
 
        OutputStream msjenv = null;
        try {
            msjenv = clients.getOutputStream();
            DataOutputStream mnsj = new DataOutputStream(msjenv);
            mnsj.writeUTF(txtenvio.getText());
            habilitarec = 1;
            recstr();
        } catch (IOException ex) {
            Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                msjenv.close();
            } catch (IOException ex) {
                Logger.getLogger(clie.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }                                         

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) throws IOException {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run(){
                new clie().setVisible(true);

            }});

    }


}



Para poder enviar archivos, tengo que usar la librería file o algo asi  no??..
y como debería programar mi servidor para que pueda  el cliente pueda sacar algo de info ?? de todos modos seguiré investigando para mejorar el servidor  que me esta fallando, al enviar el mnsj al cliente..

Modificado

aca dejo el codigo del servidor.. que me da el error.. al enviar el mnsaje del servidor al cliente.

Código: java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
// import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

//SERVIDOR. JAVA. SOCKET1.

class ejrndm {
     static final int PUERTO  = 5000;
        public static void main(String args[]) throws IOException {
        try {
            clas1s miclase = new clas1s();
            String text = "";
            System.out.println("Sirviendo por puerto: " + PUERTO);
            ServerSocket serv = new ServerSocket(PUERTO); //sOCKet del servidor. Espera peticion del cliente.
            System.out.println("----Esperando Cliente---- ");
            Socket nuCli = serv.accept(); //se guarda en un soket cuando se acepta las peticion.
            System.out.println("----Cliente conectado---- ");
           
            while(!text.equals("Salir")){
            InputStream mnsjre = nuCli.getInputStream();
            DataInputStream mnsjr = new DataInputStream(mnsjre);
            System.out.println("Cli << "+ mnsjr.readUTF());

            text = miclase.Ingresar("Serv >> ");
            OutputStream mnsjenv =  nuCli.getOutputStream();
            DataOutputStream mnsjresp = new DataOutputStream(mnsjenv);
            mnsjresp.writeUTF(" "+ text);

            }

            nuCli.close();
            serv.close();
           
        } catch (IOException ex) {
            Logger.getLogger(ejrndm.class.getName()).log(Level.SEVERE, null, ex);
        }
        }
}


Este servidor es por consola no tiene gui .. pero pronto se la hare, el problema de este CLI-SERV..
es que, El servidor esta obligado a recibir un mensaje del cliente, para poder devolver un string del serv al cliente.
La pregunta es De que manera puedo codificar mi servidor para que en todo momento pueda recibir mensajes del cliente, y del servidor enviar al cliente.. no se si me expreso bien.. espero me entiendan..sino tratare de expresarme mejor.

pd: el mnsje llega al cliente, pero en el servidor se interrumpe por un error..(investigare)
pd: el q quiere aportarme una idea para seguir agregándole cosas , se lo agradecería abrazo.
Un saludo

Deberias publicar el codigo de el servidor que estas programando.  Asi podriamos saber de que manera ayudarte.

;D