Autor
|
Tema: Socket Java (Leído 11,422 veces)
|
juancho77
Desconectado
Mensajes: 455
rie con demencia
|
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
Mensajes: 1.138
Gundam
|
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
Mensajes: 455
rie con demencia
|
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.
|
|
|
En línea
|
|
|
|
egyware
|
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
Mensajes: 162
Lo que una mente crea, otra lo destruye
|
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
Mensajes: 37
|
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
Mensajes: 37
|
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
Mensajes: 11
|
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.arpues 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda Socket RAW en java (host al que me ayude xd)
Java
|
demosdm
|
4
|
4,942
|
16 Diciembre 2010, 17:22 pm
por demosdm
|
|
|
Como usar Socket en java..!!
Java
|
HackerJack
|
6
|
9,216
|
1 Agosto 2012, 13:12 pm
por reylagarto19
|
|
|
Socket y Java
Java
|
abi-ds
|
2
|
2,805
|
8 Febrero 2012, 16:52 pm
por abi-ds
|
|
|
Problemas (bloqueado) con socket en java
Java
|
bdoX
|
1
|
2,075
|
22 Junio 2014, 03:15 am
por bdoX
|
|
|
Ayuda con Socket en Java
« 1 2 »
Java
|
Droni
|
14
|
6,217
|
28 Febrero 2015, 21:41 pm
por engel lex
|
|