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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Socket Java
« en: 4 Octubre 2008, 10:04 am »

Estoy haciendo un programa que implementa las clases Socket y ServerSocket de Java.net.
En la parte del cliente tengo una sección del programa para ingresar usuario y password y conectarse al servidor. El socket se conecta, hace el chequeo contra una tabla y permite el ingreso o no. Luego de esto (que lo hace bien) necesito que el socket siga conectado para seguir intercambiando informacion con el servidor.
Mi pregunta es como puedo hacer para crear una sola instancia del socket en la clase del cliente, y que de esa forma se quede conectada esa instancia mientras este abierta la aplicacion?

Si no se me entendio nada, pero alguien sabe de sockets, me gustaria intercambiar algunas ideas por msn o mail.
MSN = juanvillegas_77@hotm...com
Mail = juanvillegas@bvconline.com.ar


En línea

Erik#


Desconectado Desconectado

Mensajes: 1.138


Gundam


Ver Perfil
Re: Socket Java
« Respuesta #1 en: 6 Octubre 2008, 19:20 pm »

Hoy en dia solo pensais en la plataforma Windows, porque no extendeis vuestros conocimientos hacia un mundo de plataformas independientes?


En línea

juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: Socket Java
« Respuesta #2 en: 7 Octubre 2008, 19:48 pm »

Citar
Hoy en dia solo pensais en la plataforma Windows, porque no extendeis vuestros conocimientos hacia un mundo de plataformas independientes?

Que tiene que ver esto con mi consulta? Que costumbre de algunos escribir algo por escribir.

Por lo que veo, no tenes conocimientos en java. De hecho, estoy escribiendo el codigo desde Ubuntu Gutsy y el programa funciona perfectamente, DADO QUE JAVA Y GRAN PARTE DE SUS LIBRERIAS SON MULTIPLATAFORMA.  :D


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Socket Java
« Respuesta #3 en: 7 Noviembre 2008, 19:18 pm »

Da igual en que plataforma se trabaje, ya que java es multiplataforma e independiente del OS.

Primero en tu programa Servidor, lo pones a la escucha.
Listo
El Programa cliente se conecta al Servidor
le envia el user y el password a travez de socket.getOutputStream() (usa mejor BufferedWriter)
El Servidor recibe el user y el pass de una conexión(socket) usando socket.getInputStream() (usa mejor Scanner o BufferedReader), lo verifica en alguna tabla y le responde "ok" (create algun protocolo de comunicacion)
sino le responde "wrong user/pass" y puedes cerrar la conexión o esperar que ingrese de nuevo el user y password
Que tengas un buen día

En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Socket Java
« Respuesta #4 en: 10 Noviembre 2008, 05:52 am »

Ola amigos si alguien me pudiera pasar un manual de como  usar los sockets en java se lo agradecere mucho!!!!

Y si la neta no tiene nada k ver Java con eso de los So pues java es multiplataforma y siempre a existido una maquina VIRTUAL!!! de java!!! chale
En línea






joseprox

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Socket Java
« Respuesta #5 en: 17 Noviembre 2008, 23:24 pm »

Aqui les paso un Codigo de un servidor.java con ServerSocket....está completamente sencillo.....lo que no entiendad pregunten.................................


-------------------------------------------------------
/***********************************************************************
                          servidor.java
************************************************************************
aplicacion servidora del chat simple desarrollado en java.
compilar con :
                javac servidor.java
ejecutar con :
                java servidor
***********************************************************************/

// Librerias Necesarias
import java.awt.*;     // modo grafico
import java.io.*;      // entrada/salida
import java.net.*;     // funciones de red

public class servidor extends Frame {

 // elementos de la ventana
 static Button enviar = new Button("Enviar");
 static Button cerrar = new Button("Cerrar");
 static TextArea texto = new TextArea(10,40);
 static TextField mensaje = new TextField(40);

 // Componentes de la comunicacion
 static ServerSocket  servido;        // socket servidor
 static Socket cliente;               // socket para manejar los clientes
 static String mensa = "";
 static PrintStream ps;               // flujo de salida
 static DataInputStream datos;        // flujo de entrada
   
 // funcion principal
 public static void main( String args[]) {

     // crear instancia ventana
     new servidor();

     // crear socket servidor en el puerto 5000
     // se puede cambiar a nuestro gusto
     try{
        servido = new ServerSocket(5000);
     // error al crear el servidor
     }catch (IOException e) {
        System.out.println("Error al crear el Socket Servidor");
        System.exit(1);
     };

    // ciclo para el tratamiento de los clientes
    do{
      try{

        texto.append("Esperando Cliente ...\n");

        //esperar cliente
        cliente = servido.accept();
        activar();
        texto.append("Llego un cliente. Respondele ...\n");

        // inicializacion de las estructuras para la lectura/escritura
        // con los datos del cliente
        ps = new PrintStream(cliente.getOutputStream());
        datos = new DataInputStream(cliente.getInputStream());

        // ciclo de recepcion de mensajes
        while((mensa = datos.readLine()) != null){
           texto.append("Cliente dice : "+mensa+"\n");
        };

        texto.append("\nTerminando la conexion con el cliente.\n");
        cerrarconexion();
        texto.append("\nEl cliente se ha desconectado.\n");

     }catch (IOException e) {
        texto.append("Error de Lectura / Escritura en los Sockets\n");
        desactivar();
     };
    }while(true); // ciclo infinito. se desconecta un cliente y esperamos
                  // otro. para salir debemos dar click en el boton cerrar
  }

 // funcion que grafica
 public servidor() {

     // titulo de la ventana
     setTitle("Java Chat Servidor");

     // elementos de la ventana
     Panel pan = new Panel();
     pan.add(enviar);
     pan.add(cerrar);

     Panel pan1 = new Panel();
     pan1.add(mensaje);

     Panel pan2 = new Panel();
     pan2.add(texto);

     add("North",pan2);
     add("Center",pan1);
     add("South",pan);

     enviar.disable();
     texto.disable();
     mensaje.disable();

     // tama¤o constante
     setResizable(false);

     // organizar y mostrar
     pack();
     show();
  }

 public boolean action(Event ev, Object arg) {
 
   // eventos en los botones

   // click en el boton cerrar
   if((ev.target == cerrar)&&(ev.id == 1001)){
       cerrarconexion();
       System.exit(0);
    }
   // click en el boton enviar
   if((ev.target == enviar)&&(ev.id == 1001)){
      if(!mensaje.getText().equals("")){
         ps.println(mensaje.getText());
         texto.append("Servidor dice : "+mensaje.getText()+"\n");
         mensaje.setText("");
       }
    }
   return(true);
 }

 // esta funcion habilita los elementos de la ventana
 public static void activar(){
     enviar.enable();
     mensaje.enable();
  }

 // esta funcion deshabilita los elementos de la ventana
 public static void desactivar(){
     enviar.disable();
     mensaje.disable();
  }

 // funcion que cierra la conexion con el cliente
 public static void cerrarconexion(){
     try{
         cliente.close();
     }catch(IOException e){
         texto.append("Error al cerrar el cliente");
     };
     desactivar();
 }
}

-------------------------------------------------------
En línea

Toda persona tiene derecho a cometer errores...
la verdad es q solo ella es RESPONSABLE DE LO QUE HACE.....!!!!!
joseprox

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Socket Java
« Respuesta #6 en: 17 Noviembre 2008, 23:27 pm »

Aqui les paso la clase cliente...........esta es muy facil........no tiene pierde...



____________________________________________

/***********************************************************************
                          cliente.java
************************************************************************
aplicacion cliente del chat simple desarrollado en java.
compilar con :
                javac cliente.java
ejecutar con :
                java cliente [direccion ip o nombre del equipo servidor]
***********************************************************************/

// Librerias Necesarias
import java.awt.*;     // modo grafico
import java.io.*;      // entrada/salida
import java.net.*;     // funciones de red

public class cliente extends Frame {

 // elementos de la ventana
 static Button enviar = new Button("Enviar");
 static Button cerrar = new Button("Cerrar");
 static TextArea texto = new TextArea(10,40);
 static TextField mensaje = new TextField(40);

 // Componentes de la comunicacion
 static Socket  servidor;             // socket servidor
 static InetAddress direccion;        // direccion del servidor
 static String mensa = "";
 static PrintStream ps;               // flujo de salida
 static DataInputStream datos;        // flujo de entrada

 // funcion principal
 public static void main( String args[]) {

     //crear instancia ventana
     new cliente();
     
     //crear socket cliente relacionado con el servidor
     try{
        direccion = getdir(args);               // llamada a getdirs()
        servidor = new Socket(direccion, 5000); // creacion del socket servidor
        activar();

        // inicializar el flujo de salida con los datos del servidor
        ps = new PrintStream(servidor.getOutputStream());
        // inicializar el flujo de entrada
        datos = new DataInputStream(servidor.getInputStream());

        texto.append("Conectado con el servidor ...\n");

        // ciclo de recepcion de mensajes
        while((mensa = datos.readLine()) != null){
           texto.append("Servidor dice : "+mensa+"\n");
        };

       texto.append("Desconectado del servidor ...\n");
       cerrarconexion();
       desactivar();

     }catch (IOException e) {  // en caso de error de entrada/salida
        System.out.println("Error al conectar con el servidor");
        System.exit(1);
     };
  }

 // funcion que grafica
 public cliente() {

     // titulo de la ventana
     setTitle("Java Chat Cliente");

     // elementos de la ventana
     Panel pan = new Panel();
     pan.add(enviar);
     pan.add(cerrar);

     Panel pan1 = new Panel();
     pan1.add(mensaje);

     Panel pan2 = new Panel();
     pan2.add(texto);

     add("North",pan2);
     add("Center",pan1);
     add("South",pan);

     enviar.disable();
     texto.disable();
     mensaje.disable();

     // tama¤o constante
     setResizable(false);

     // organizar y mostrar
     pack();
     show();
  }
 public boolean action(Event ev, Object arg) {
 
   // eventos en los botones

   // click en el boton cerrar
   if((ev.target == cerrar)&&(ev.id == 1001)){
       cerrarconexion();
       System.exit(0);
    }

   // click en el boton enviar
   if((ev.target == enviar)&&(ev.id == 1001)){
      if(!mensaje.getText().equals("")){
         ps.println(mensaje.getText()); // enviar el contenido de texto
         texto.append("Cliente dice : "+mensaje.getText()+"\n");
         mensaje.setText("");
       }
    }
   return(true);
 }

 // esta funcion habilita los elementos de la ventana
 public static void activar(){
     enviar.enable();
     mensaje.enable();
  }

 // esta funcion deshabilita los elementos de la ventana
 public static void desactivar(){
     enviar.disable();
     mensaje.disable();
  }

 // funcion que convierte la direccion ip o el nombre del equipo donde esta
 // corriendo el socket servidor que se pasa como parametro al programa
 public static InetAddress getdir(String ar[]){
     InetAddress tem = null;
     try{
     // si no hay argumentos tomar localhost
     if(ar.length == 0){
       tem = InetAddress.getLocalHost();
      }
     // si hay convertirla de string a inetaddress
     if(ar.length == 1){
       tem = InetAddress.getByName(ar[0]);
      }
     // error en la direccion
     }catch(UnknownHostException e){
       texto.append("Error en la direccion.");
      }
     return(tem);
  }

 // funcion que cierra la conexion con el servidor
 public static void cerrarconexion(){
     try{
         servidor.close();
     }catch(IOException e){
         texto.append("Error al cerrar el cliente");
     };
     desactivar();
 }
}


____________________________________________

En línea

Toda persona tiene derecho a cometer errores...
la verdad es q solo ella es RESPONSABLE DE LO QUE HACE.....!!!!!
genco

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Socket Java
« Respuesta #7 en: 5 Marzo 2009, 19:45 pm »

Estoy haciendo un programa que implementa las clases Socket y ServerSocket de Java.net.
En la parte del cliente tengo una sección del programa para ingresar usuario y password y conectarse al servidor. El socket se conecta, hace el chequeo contra una tabla y permite el ingreso o no. Luego de esto (que lo hace bien) necesito que el socket siga conectado para seguir intercambiando informacion con el servidor.
Mi pregunta es como puedo hacer para crear una sola instancia del socket en la clase del cliente, y que de esa forma se quede conectada esa instancia mientras este abierta la aplicacion?

Si no se me entendio nada, pero alguien sabe de sockets, me gustaria intercambiar algunas ideas por msn o mail.
MSN = juanvillegas_77@hotm...com
Mail = juanvillegas@bvconline.com.ar


pues usa el patron singleton, se usa para crear una solo instancia de una clase y generalmente lo usan para administrar las conexiones y otras cositas.

el servidor debe estar siempre escuchando y solo cerrar la conexion cuando el usuario y el password no es correcto,

en el cliente tambien debes permitir el cierre de la conexion por parte del usuario, practicamente es un chat lo que estas haciendo.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda Socket RAW en java (host al que me ayude xd)
Java
demosdm 4 4,796 Último mensaje 16 Diciembre 2010, 17:22 pm
por demosdm
Como usar Socket en java..!!
Java
HackerJack 6 8,972 Último mensaje 1 Agosto 2012, 13:12 pm
por reylagarto19
Socket y Java
Java
abi-ds 2 2,668 Último mensaje 8 Febrero 2012, 16:52 pm
por abi-ds
Problemas (bloqueado) con socket en java
Java
bdoX 1 1,947 Último mensaje 22 Junio 2014, 03:15 am
por bdoX
Ayuda con Socket en Java « 1 2 »
Java
Droni 14 5,801 Último mensaje 28 Febrero 2015, 21:41 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines