elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Socket / cliente servidor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Socket / cliente servidor  (Leído 14,506 veces)
danielo-

Desconectado Desconectado

Mensajes: 218


:)


Ver Perfil
Socket / cliente servidor
« 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
  1. import java.io.*;
  2. import java.net.*;
  3. class Cliente{
  4.  
  5.  static final String HOST="localHost";//
  6.  static final int PUERTO=5000;
  7.  
  8. public Cliente(){
  9.  try{
  10.    Socket skCliente=new Socket(HOST, PUERTO);
  11.    DataInputStream flujo=new DataInputStream(skCliente.getInputStream());       DataOutputStream salida=new DataOutputStream(skCliente.getOutputStream());
  12.   System.out.println(flujo.readUTF());//se captura una cadena
  13.   salida.writeUTF("Cliente say: Hola");
  14.   skCliente.close();//cierre del Socket
  15.  
  16.    }catch(Exception e){
  17. System.out.println(e.getMessage());
  18.    }
  19.  
  20. }
  21.  
  22.  public static void main (String arg[]){
  23. new Cliente();
  24.  
  25. }
  26. }
  27.  
  28. ***************************++
  29.  
  30. Este es para el Servidor:
  31.  
  32. import java.io.*;
  33. import java.net.*;
  34. class Servidor{
  35.  
  36. static final int PUERTO=5000;
  37.  
  38. public Servidor(){
  39.      try{
  40.           ServerSocket skServidor=new ServerSocket(PUERTO);
  41.           System.out.println("Escucho el puntero "+PUERTO);
  42.           for(int numCliente=1;numCliente<=3;numCliente++){
  43.             Socket skCliente=skServidor.accept();
  44.             System.out.println("Sirvo al cliente "+numCliente);
  45.             OutputStream aux=skCliente.getOutputStream();
  46.             DataOutputStream flujo=new DataOutputStream(aux);
  47.             DataInputStream entrada=new DataInputStream(skCliente.getInputStream());
  48.             flujo.writeUTF("Servidor dece: Hola Cliente "+numCliente);
  49.             System.out.println(entrada.readUTF());
  50.             skCliente.close();
  51.             }
  52.             System.out.println("Demasiados Clientes");
  53.         }catch(Exception e){
  54.              System.out.println(e.getMessage());
  55.            }
  56.  
  57.    }
  58.   public static void main(String arg[]){
  59.      new Servidor();
  60.     }
  61. }
  62.  


« Última modificación: 23 Abril 2012, 14:43 pm por Debci » En línea

Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



Ver Perfil WWW
Re: Socket / cliente servidor
« Respuesta #1 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.


En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Socket / cliente servidor
« Respuesta #2 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
  1. InputStream is = socket.getInputStrean
  2.  
A grandes rasgos esa es la idea.

Saludos
En línea

_rez3t45_

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: Socket / cliente servidor
« Respuesta #3 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



En línea

<-- ZmPlmnTe Punk -->
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Socket / cliente servidor
« Respuesta #4 en: 2 Octubre 2009, 23:19 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




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<?

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cliente/servidor socket « 1 2 »
Programación Visual Basic
mig5ueles 11 5,112 Último mensaje 22 Enero 2007, 20:47 pm
por mig5ueles
Socket C++ cliente/servidor con ip de internet: no me va
Programación C/C++
ellentejilla 1 4,001 Último mensaje 27 Octubre 2010, 21:22 pm
por Horricreu
socket cliente y servidor c++ / linux
Programación C/C++
d00ze13 0 4,918 Último mensaje 28 Abril 2011, 18:38 pm
por d00ze13
Socket java Servidor Cliente
Java
momo1234 2 4,396 Último mensaje 12 Mayo 2012, 16:57 pm
por momo1234
Python 3.7 socket socket.gaierror errno7 cliente Android.
Scripting
@XSStringManolo 2 3,089 Último mensaje 28 Diciembre 2019, 00:09 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines