Título: Socket / cliente servidor Publicado por: danielo- en 29 Septiembre 2009, 18:55 pm Hola a toda la comunidad!!
de nuevo con una tarea!!! espero y puedan ayudarme Necesito crear un programa en java usando sockets para lograr una conexion cliente-servidor entre dos maquinas. Y también la forma detallada para hacerlo en ubuntu ...porfa!!! urge!!! ..e logrado hacer algo, pero la verdad es que no se si voy por buen camino, se logran intercambiar textos, pero solo sale en una computadora, y se supone que debe salir conectado a una red... no se si sea ahi donde este fallando, por lo que tambien pido ayuda para crear una red inalambrica en ubuntu para que esto funcione, ayudenme porfavor!!! urge!!! Les dejo mi codigo: Este es para el cliente: Código
Título: Re: Socket / cliente servidor Publicado por: Casidiablo en 29 Septiembre 2009, 20:13 pm La cosa es que el servidor está programado para solo recibir cosas, y el cliente solo para enviar. Ese código que te copiaste hace solo la mitad de lo que quieres.
Puedes probar alguno de los ejercicios del libro de deitel que tengo aquí, al menos para entender mejor: http://casidiablo.net/java/ http://casidiablo.net/java-socket-chat-basico/ O un chat que hice hace años: http://casidiablo.net/casidiablo-chat/ La idea es que debes tener un programa mejor estructurado, en el que se definan tanto las rutinas para enviar como las de recibir datos. Pero lo primordial es que entiendas lo que estás haciendo, porque copiar programas es muy sencillo (me encanta ver códigos agenos), pero entender es lo que prima... sino no podrás hacer mucho por tu cuenta. Un saludo. Título: Re: Socket / cliente servidor Publicado por: Debci en 30 Septiembre 2009, 21:30 pm La cosa es que tu pasas el stream del socket directamente a un Data Strea, y primero ha de pasar por el Stream sencillo es decir:
Código A grandes rasgos esa es la idea. Saludos Título: Re: Socket / cliente servidor Publicado por: _rez3t45_ en 2 Octubre 2009, 19:56 pm holas
con lo poco que se de esto creo poderte ayudar... :rolleyes: como dicen uestro compañero Casidiablo escierto tu servidor solo recibe mensajes y Debes implentarlo tambien para que pueda enviar entonces : // en el Cliente-servidor (envia y devuelve mensajes) 1.- create un Jframe de nombre FRM_servidor(cualquiera.. pero este uzo yo abajito) //importas import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.ServerSocket; import java.net.Socket; // se implementa un hilo para queconstantemente este activo y no se sobrecarge //nuestra aplicacion asi que le extendemos a nuestra clase del Jframe //siempre va un procedimiento run - cuando se uza implements Runnable public class Server extends javax.swing.JFrame implements Runnable { //aca imprime los mensajes que le mana el cliente public void run(){ try{ ServerSocket serv = new ServerSocket(9090); while(true){ Socket cli = serv.accept(); DataInputStream flujo = new DataInputStream(cli.getInputStream()); String men = flujo.readUTF(); txt_conversa.append("\n"+ cli.getInetAddress() + " : " + men); cli.close(); } }catch(Exception e){ JOptionPane.showMessageDialog(null, e.getMessage()); } } // luego en nuestro constructor prendemos el hilo public FRM_servidor() { initComponents(); //declarando u hilo para llamarlo Thread hilo = new Thread(this); hilo.start(); this.setSize(500,500); } 2.- creamos un boton que dice devolver menSaje y dentro de su evento ponemos //aka dvolvindo el mensaje //volviendo usuario servidor try{ //ip Destino // String ip = "pones aka la ip destino mi ip cliente " Socket cli = new Socket("200.60.136.56",9090); DataOutputStream flujo = new DataOutputStream(cli.getOutputStream()); flujo.writeUTF(this.txt_responder.getText()); txt_conversa.append("\n ♫ Anthony ♫ ----> "+txt_responder.getText()); cli.close(); }catch(Exception e){ JOptionPane.showMessageDialog(null, e.getMessage()); } // ********************* ahora el cliente //este solo envia mensajes te faltaria .. implementar al form // implements Runnable y crear el hilo 1.-creas otro Jframe (FRM_cliente asi komo el mio) //Instanciar los componentes import java.net.*; // prmite la net import java.io.*; // manejo de archivos import javax.swing.JOptionPane; 2.- creas un boton que diga mandar mensaje try{ // String ip = "pones aka la ip destino mi ip server es 192.168.1.32 " // Strin puerto = "el puerto de salida yo uzo el 9090" //ip Destino Socket cli = new Socket("192.168.1.32",9090); DataOutputStream flujo = new DataOutputStream(cli.getOutputStream()); flujo.writeUTF(txt_msg.getText()); cli.close(); }catch(Exception e){ JOptionPane.showMessageDialog(null, e.getMessage()); } // end bueno de este metodo me permitio comunicarme atraves de una lan de mi univ,,, bueno espero que te sirva mi ejemplo .. :silbar: pero aun soy muy novato .. pero cualquier cosa me dices para ver si te puedo ayudar u explicar xau Título: Re: Socket / cliente servidor Publicado por: Debci en 2 Octubre 2009, 23:19 pm holas además o es que tengo mal la vista o las horas altas de la noche, porque me parece ver que encapsula un inputstream aignandole el del cliente y luego no lo utiliza, me equivoco<?con lo poco que se de esto creo poderte ayudar... :rolleyes: como dicen uestro compañero Casidiablo escierto tu servidor solo recibe mensajes y Debes implentarlo tambien para que pueda enviar entonces : // en el Cliente-servidor (envia y devuelve mensajes) 1.- create un Jframe de nombre FRM_servidor(cualquiera.. pero este uzo yo abajito) //importas import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.ServerSocket; import java.net.Socket; // se implementa un hilo para queconstantemente este activo y no se sobrecarge //nuestra aplicacion asi que le extendemos a nuestra clase del Jframe //siempre va un procedimiento run - cuando se uza implements Runnable public class Server extends javax.swing.JFrame implements Runnable { //aca imprime los mensajes que le mana el cliente public void run(){ try{ ServerSocket serv = new ServerSocket(9090); while(true){ Socket cli = serv.accept(); DataInputStream flujo = new DataInputStream(cli.getInputStream()); String men = flujo.readUTF(); txt_conversa.append("\n"+ cli.getInetAddress() + " : " + men); cli.close(); } }catch(Exception e){ JOptionPane.showMessageDialog(null, e.getMessage()); } } // luego en nuestro constructor prendemos el hilo public FRM_servidor() { initComponents(); //declarando u hilo para llamarlo Thread hilo = new Thread(this); hilo.start(); this.setSize(500,500); } 2.- creamos un boton que dice devolver menSaje y dentro de su evento ponemos //aka dvolvindo el mensaje //volviendo usuario servidor try{ //ip Destino // String ip = "pones aka la ip destino mi ip cliente " Socket cli = new Socket("200.60.136.56",9090); DataOutputStream flujo = new DataOutputStream(cli.getOutputStream()); flujo.writeUTF(this.txt_responder.getText()); txt_conversa.append("\n ♫ Anthony ♫ ----> "+txt_responder.getText()); cli.close(); }catch(Exception e){ JOptionPane.showMessageDialog(null, e.getMessage()); } // ********************* ahora el cliente //este solo envia mensajes te faltaria .. implementar al form // implements Runnable y crear el hilo 1.-creas otro Jframe (FRM_cliente asi komo el mio) //Instanciar los componentes import java.net.*; // prmite la net import java.io.*; // manejo de archivos import javax.swing.JOptionPane; 2.- creas un boton que diga mandar mensaje try{ // String ip = "pones aka la ip destino mi ip server es 192.168.1.32 " // Strin puerto = "el puerto de salida yo uzo el 9090" //ip Destino Socket cli = new Socket("192.168.1.32",9090); DataOutputStream flujo = new DataOutputStream(cli.getOutputStream()); flujo.writeUTF(txt_msg.getText()); cli.close(); }catch(Exception e){ JOptionPane.showMessageDialog(null, e.getMessage()); } // end bueno de este metodo me permitio comunicarme atraves de una lan de mi univ,,, bueno espero que te sirva mi ejemplo .. :silbar: pero aun soy muy novato .. pero cualquier cosa me dices para ver si te puedo ayudar u explicar xau Saludos |