Título: Ayuda con Cliente-servidor!! Publicado por: Allan_M en 5 Diciembre 2007, 20:27 pm Hola. la tarea es la siguiente:
Objetivo de la tarea: La tarea se trata de hacer un servicio de directorio de teléfono en la Internet. El servicio es implementado por un servidor que tiene como tarea por un lado, registrar los datos de las personas y por otro, entregar los datos de alguna persona si los tiene. Por su lado los clientes pueden hacer dos cosas: 1) registrar su nombre y teléfono con el servidor, o 2) preguntar al servidor por el teléfono de una persona dado su nombre. El servidor: El servidor, que puede estar corriendo en cualquier computador estará escuchando en el port 8888 requerimientos de personas que quieran usar el servicio, ya sea para registrarse o para pedir datos. Esto lo hace creando un socket servidor amarrado al por 8888 con la instrucción ServerSocket ssocket = new ServerSocket(8888); y poniéndolo a escuchar dentro de un ciclo infinito (while(true)) con la instrucción Socket so = ssocket.accept(); Cuando se conecta un cliente, se abre un BufferedReader y se lee el mensaje (una sola línea). Si la línea comienza con las letras REG (mayúsculas) se trata de una petición de registro de nombre y número. En ese caso el resto de la línea viene como sigue: luego de REG vendrá un espacio y a continuación el teléfono de la persona, luego otro espacio y el nombre completo hasta el final de la línea. Ejemplos: REG 2285108 Juan Perez Jimenez REG 8796788 Ana Maria Castillo Ramirez REG 7435263 Marianela Recabarren Martinez El servidor debe reaccionar a esto registrando los datos en las estructuras que usted estime adecuadas. Si las primeras 3 letras PET (mayúsculas) se trata de una petición por número de teléfono. En ese caso, luego de las 3 letras vendrá un espacio y el resto es el nombre completo o parte del nombre de la persona de la cual se quiere el teléfono. Ejemplos: PET Juan Perez PET Maria En este caso, el servidor responderá al cliente (escribiendo líneas en un PrintWriter abierto desde el socket) con todos los nombres y números telefónicos de las personas que tengan dentro de su nombre el string enviado. Para el primer ejemplo, si se han registrado sólo las trés personas del ejemplo anterior, se debe mandar sólo una línea con el nombre completo y el teléfono de Juan Perez Jiménez. Para el segundo ejemplo, se deben mandar dos líneas, una con el nombre completo y teléfono de Ana María y otra con los datos de Marianela. Para avisarle al cliente que ya no vienen más líneas se envía una última línea que solo contiene un punto “.” al comienzo de ella. El cliente: Debe escribir un cliente que permita registrar personas en el servidor o preguntar por ellas. Para ello debe recibir los comandos del usuario desde un objeto Console, conectarse con el servidor y recibir la respuesta en caso que sea necesario. Un posible ejemplo del diálogo entre el usuario y el programa cliente es el siguiente: Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 1 Nombre : Juan Perez Jiménez Numbero: 2285108 Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 1 Nombre : Ana Maria Castillo Ramirez Numbero: 8796788 Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 1 Nombre : Marianela Recabarren Martinez Numbero: 7435263 Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 2 Nombre : Ricardo No hay resultados Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 2 Nombre : Maria 8796788 Ana Maria Castillo Ramirez 7435263 Marianela Recabarren Martinez Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 0 TENGO TODA LA conexión, HECHA, CLIENTE-SERVIDOR, SOLO ME FALTA "El servidor debe reaccionar a esto registrando los datos en las estructuras que usted estime adecuadas. " ALGUIEN PODRIA AYUDARME CON UN CODIGO?.. YA SEA CON LISTAS ENLAZADAS O CON ARRAYS, Y DONDE DEBO PONERLO? agradeceria sus respuestas Título: Re: AYUDA CON UN PROGRAMA!! Publicado por: Casidiablo en 5 Diciembre 2007, 20:59 pm Si de verdad quieres ayuda lo más lógico sería que pusieras lo que llevas, de lo contrario pareciera que quieres que te hagan la tarea.
Un saludo! Título: Re: AYUDA CON UN PROGRAMA!! Publicado por: Allan_M en 5 Diciembre 2007, 21:08 pm ok como puedo poner el codigo que llevo?...
soy nuevo y no cacho naa... jaja, obviamente debo poner el codigo, pero si me dicen como subirlo seria mejor Título: Re: AYUDA CON UN PROGRAMA!! Publicado por: Allan_M en 5 Diciembre 2007, 21:16 pm Este es el servidor:
Código
ESTE ES EL CLIENTE: Código
me falta registrar los datos en el server, no cacho como ponerlo ni donde... ayuda por favor Título: Re: AYUDA CON UN PROGRAMA!! Publicado por: Ragnarok en 5 Diciembre 2007, 21:35 pm A Casidiablo se le ha olvidado decirte que te leas las normas, léelas sin falta.
Título: Ayuda con Cliente-servidor!! Publicado por: Allan_M en 6 Diciembre 2007, 05:18 am Hola a todos, soy nuevo aqui, me gustaría que me ayudaran con una duda que tengo...
El problema es el siguiente... Objetivo de la tarea: La tarea se trata de hacer un servicio de directorio de teléfono en la Internet. El servicio es implementado por un servidor que tiene como tarea por un lado, registrar los datos de las personas y por otro, entregar los datos de alguna persona si los tiene. Por su lado los clientes pueden hacer dos cosas: 1) registrar su nombre y teléfono con el servidor, o 2) preguntar al servidor por el teléfono de una persona dado su nombre. El servidor: El servidor, que puede estar corriendo en cualquier computador estará escuchando en el port 8888 requerimientos de personas que quieran usar el servicio, ya sea para registrarse o para pedir datos. Esto lo hace creando un socket servidor amarrado al por 8888 con la instrucción ServerSocket ssocket = new ServerSocket(8888); y poniéndolo a escuchar dentro de un ciclo infinito (while(true)) con la instrucción Socket so = ssocket.accept(); Cuando se conecta un cliente, se abre un BufferedReader y se lee el mensaje (una sola línea). Si la línea comienza con las letras REG (mayúsculas) se trata de una petición de registro de nombre y número. En ese caso el resto de la línea viene como sigue: luego de REG vendrá un espacio y a continuación el teléfono de la persona, luego otro espacio y el nombre completo hasta el final de la línea. Ejemplos: REG 2285108 Juan Perez Jimenez REG 8796788 Ana Maria Castillo Ramirez REG 7435263 Marianela Recabarren Martinez El servidor debe reaccionar a esto registrando los datos en las estructuras que usted estime adecuadas. Si las primeras 3 letras PET (mayúsculas) se trata de una petición por número de teléfono. En ese caso, luego de las 3 letras vendrá un espacio y el resto es el nombre completo o parte del nombre de la persona de la cual se quiere el teléfono. Ejemplos: PET Juan Perez PET Maria En este caso, el servidor responderá al cliente (escribiendo líneas en un PrintWriter abierto desde el socket) con todos los nombres y números telefónicos de las personas que tengan dentro de su nombre el string enviado. Para el primer ejemplo, si se han registrado sólo las trés personas del ejemplo anterior, se debe mandar sólo una línea con el nombre completo y el teléfono de Juan Perez Jiménez. Para el segundo ejemplo, se deben mandar dos líneas, una con el nombre completo y teléfono de Ana María y otra con los datos de Marianela. Para avisarle al cliente que ya no vienen más líneas se envía una última línea que solo contiene un punto “.” al comienzo de ella. El cliente: Debe escribir un cliente que permita registrar personas en el servidor o preguntar por ellas. Para ello debe recibir los comandos del usuario desde un objeto Console, conectarse con el servidor y recibir la respuesta en caso que sea necesario. Un posible ejemplo del diálogo entre el usuario y el programa cliente es el siguiente: Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 1 Nombre : Juan Perez Jiménez Numbero: 2285108 Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 1 Nombre : Ana Maria Castillo Ramirez Numbero: 8796788 Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 1 Nombre : Marianela Recabarren Martinez Numbero: 7435263 Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 2 Nombre : Ricardo No hay resultados Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 2 Nombre : Maria 8796788 Ana Maria Castillo Ramirez 7435263 Marianela Recabarren Martinez Que accion desea realizar (1- registrar, 2- consultar, 0-salir) : 0 lo que llevo hasta ahora es el Servidor: Código: import java.io.BufferedReader; y el Cliente : Código: import java.io.BufferedReader; Mi problema es que me falta usar alguna estructura que me permita guardar los datos, por favor, si alguien cacha como hacerlo que me ayude, porque no cacho donde ponerlo... se me ocurrio hacer una lista enlazada, pero no se como ocuparla dentro del socket del servidor, para que atienda las peticiones del Cliente. Aqui va lo que hice... Código: Class Nodo AYUDA POR FAVOR, creo que es lo unico que me falta pa terminar la tarea.. agradezco su atencion y sus respuestas... Allan.. Título: Re: Ayuda con Cliente-servidor!! Publicado por: Ragnarok en 6 Diciembre 2007, 17:07 pm Esta no es forma de preguntar, tu pregunta es cómo trasferir información del cliente al servidor y/o viceversa, no hace falta que nos cuentes todo eso y que nos hagas perder el tiempo leyendo cosas que no nos interesan.
Usa xml, puedes transferirlo cómodamente por el socket al ser texto y puedes generarlo y parsearlo usando xmlbeans. Si quieres algo más sencillo usa simples strings. Otra opción es usar objetos serializables: http://java.sun.com/javase/6/docs/api/index.html?java/io/Serializable.html Ya se ha hablado de ellos anteriormente en el foro. PD: y ya si te quieres complicar más puedes mirarte SOAP. Ordenando por dificultad del más fácil al más difícil (o que te va a llevar más tiempo leer) yo diría que es: Strings, objetos serializables, XML, SOAP. Título: Re: Ayuda con Cliente-servidor!! Publicado por: Allan_M en 6 Diciembre 2007, 23:24 pm Esta no es forma de preguntar, tu pregunta es cómo trasferir información del cliente al servidor y/o viceversa, no hace falta que nos cuentes todo eso y que nos hagas perder el tiempo leyendo cosas que no nos interesan. Usa xml, puedes transferirlo cómodamente por el socket al ser texto y puedes generarlo y parsearlo usando xmlbeans. Si quieres algo más sencillo usa simples strings. Otra opción es usar objetos serializables: http://java.sun.com/javase/6/docs/api/index.html?java/io/Serializable.html Ya se ha hablado de ellos anteriormente en el foro. PD: y ya si te quieres complicar más puedes mirarte SOAP. Ordenando por dificultad del más fácil al más difícil (o que te va a llevar más tiempo leer) yo diría que es: Strings, objetos serializables, XML, SOAP. y como ocupo los xml?. me puedes ayudar con codigo por favor? gracias Título: Re: Ayuda con Cliente-servidor!! Publicado por: Ragnarok en 6 Diciembre 2007, 23:33 pm Lo primero es aprender xml, lo siguiente xml-schema o xsd y luego xml-beans, de apache. Cuando hayas aprendido esas cosas verás que no necesitas preguntar eso y que no tiene sentido preguntarlo en un foro puesto que la respuesta o es demasiado larga o no sirve de nada.
Título: Re: Ayuda con Cliente-servidor!! Publicado por: NightZpy en 7 Diciembre 2007, 06:17 am No es muy dificil un archivo xml que se genere y se pase serializado en un stream y listo!
salu2s... |