Ir al contenido principal

Aplicación Cliente/Servidor Sockets Java

Vamos a desarrollar una pequeña aplicación de comunicación en redes, la haremos del tipo Cliente/Servidor, a veces cuando tenemos aplicaciones de este tipo es difícil distinguir que parte de la aplicación es el cliente y cual el servidor, en nuestro caso será fácil darse cuenta de cual es cual. Normalmente el cliente es que inicia la comunicación pidiendo un servicio y el servidor es el que provee ese servicio.
La comunicación entre ambas partes además de tener como infraestructura sockets de TCP/IP tiene que tener un protocolo particular, este protocolo es que marca el orden de la transmisión de los datos y el tipo de estos datos, para que coincida el tipo de datos que una de las entidades manda y el tipo de datos que la otra espera recibir, esto es muy importante porque si no se respeta la aplicación no sirve para nada, además de que contendrá una serie de errores.

Esquema de un Servidor

  1. Abrir un socket (ServerSocket) para esperar por peticiones de conexión
  2. Al llegar una petición, crear otro socket (Socket) por medio del cual se comunicará con el cliente
  3. Asociar uno o más flujos intermedios a los flujos de entrada (InputStream) y de salida (OutputStream) asignados al socket
  4. Leer/Escribir a los flujos de acuerdo al protocolo establecido
  5. Eventualmente termina la comunicación
  6. Cerrar flujos y sockets

 

Esquema del Cliente

  1. Abrir un socket (Socket) para conectarse y comunicarse con el Servidor
  2. Establecer conexión con el Servidor
  3. Asociar uno o más flujos intermedios a los flujos de entrada (InputStream) y de salida (OutputStream) asignados al socket
  4. Leer/Escribir a los flujos de acuerdo al protocolo establecido
  5. Eventualmente termina la comunicación
  6. Cerrar flujos y sockets 



Como esta entrada es con fines didácticos solo pido se utilice como una guia no para ser presentada directamente como un trabajo desarrollado por ustedes, la pueden descargar desde los siguientes links:




Deja tu comentario o Agradecimiento, ESTO NO CUESTA NADA. Es lo que nos motiva a ayudar.

Comentarios

  1. GAMA: Gracias por la aplicacion esta muy buena la del cliente servidor me ha sido d mucha ayuda

    ResponderEliminar
  2. Muchas gracias por este aporte, me servirá mucho para aprender mas acerca de los socket, es uno de los mas completos que he visto.

    ¿Se le Podría crear o implementar conexión a MySQL y así poder realizar consultas desde el cliente y el servidor?

    Saludos, que Dios te bendiga mucho! gracias!!

    ResponderEliminar
  3. Buena pregunta... podrías?

    ResponderEliminar
  4. Ok si se puede, estén atentos a esta entrada que voy a modificar este proyecto...

    Saludos,

    ResponderEliminar
  5. Hola, gracias por el tuto, esta bueno... tambien quisiera que dieras un ejemplo de cliente-servidor donde el servidor se conecte a una base de datos y el cliente pida una consulta, y luego el servidor le muestre dicha consulta... Gracias..!!

    ResponderEliminar
  6. Gracias por su colaboración y aportes en el proceso de aprendizaje este ejemplo ayuda mucho

    ResponderEliminar
  7. Hola, gracias por compartir! :)
    Me servirá de mucho
    Saludos!!

    ResponderEliminar
  8. Gracias!, estaba varado por una instrucción, pude resolver mi error. Dio te bendiga.

    ResponderEliminar
  9. BRO ... NO MODIFICASTE EL PROYECTO CON LA CONEXION A UNA BASE DE DATOS .. DONDE SE LE PUEDAN MANDAR PETICIONES ??

    ResponderEliminar
  10. Hola, bueno la verdad no lo he modificado, pero lo que debes hacer es descargar el .jar driver para MySQL y despues crear una clase que establezca la conexión y comunicación con la bd, en teoría no debería ser complicado ya que en la petición al socket puedes especificar que consulta necesitas por ejemplo:

    petición: traerUsuarios -> en la clase function traerUsuarios(){}....

    Espero te ayude mi respuesta.

    ResponderEliminar
  11. a la hora de descargarlo me aparece con errores... org

    ResponderEliminar
    Respuestas
    1. Hola, ese error puede ser por la version de java, verifica si estas utilizando la ultima, en caso que si haces click derecho sobre el proyecto (en netbeans) y escoges la opción resolver problemas.

      Eliminar
  12. Se puede conectar una aplicación web con una aplicación de escritorio mediante socket la aplicación de escritorios seria como servidor y si es así como hacerlo

    ResponderEliminar
  13. Muy buen Aporte para desarrolladores espero la aplicaion que se pueda conectar a un abase de datos.

    ResponderEliminar
  14. Hola amigo como haría para poder enviar 3 notas a un servidor y que este le devuelva al cliente si aprobo o no.

    ResponderEliminar
  15. Hola Jeison, muy buena app, como a manera de aprendizaje intento entrar en el diseño de las frameWorks, pero la versión no es compatible con la que uso... sabes algo al respecto? Greacias y de nuevo felicitaciones.

    ResponderEliminar
    Respuestas
    1. es un poco tarde verdad jeje, pero lo puedes ver usando netbeans 7.0.1

      Eliminar

Publicar un comentario

Entradas populares de este blog

Guardar datos en Postgre desde Java

Saludos amigos en esta oportunidad estableceremos conexion con postgre, para realizar la insercion de datos, primero que todo crearemos las variables de la conexion: String driver = "org.postgresql.Driver" ; String ruta = "jdbc:postgresql://localhost:5432/ nombre de la bd " ; String user = "postgres" ; String password = " clave "; Importante: El driver de Postgre para Java lo puedes descargar desde aqui: Driver PostgreSQL para explicar algo que es fundamental sobre la base de datos Ejemplo es que esta tiene tres (3) campos que son: codusuarios : de tipo biginteger serial (lo quiere decir que es un campo auto incremento en postgre). nombre : de tipo text. identificacion : de tipo text . Ahora seguimos con el codigo para insertar datos. Esta es la funcion correspondiente:   public void GuardarUsuario ( String nombre, String identificacion){         / / Insertar datos a la bd:           try{             Class.forName( d

Fireworks CS3 portable

Para que hagas los logos, botones e imagenes para tus aplicaciones facil y rapido... ¿Qué es Fireworks? Adobe Fireworks es una aplicación en forma de estudio (basada en la forma de estudio de Adobe Flash ), pero con más parecido a un taller destinado para el manejo híbrido de gráficos vectoriales con Gráficos en mapa de bits y que ofrece un ambiente eficiente tanto para la creación rápida de prototipos de sitios Web e interfaces de usuario, como para la creación y Optimización de Imágenes para web. Originalmente fue desarrollado por Macromedia , compañía que fue comprada en 2005 por Adobe Systems . Fireworks está disponible de forma individual o integrado en Adobe CS3/CS4/CS5 y por tanto ha sido diseñado para integrarse con otros productos de Adobe, como Dreamweaver y Flash . Integración con Adobe Flash La integración con Adobe Flash se ha ido reduciendo paulatinamente desde que Flash, en su versión 7, integró la herramienta PolyStar que hace un polígono

Pasar de una ventana a otra en java

Hola a todos en esta oportunidad estamos postiando algo que cuando empezamos con java es muy necesario y es como pasar de una ventana a otra, ya sea JDialog o JFrame; creados en tiempo de ejecucion o en aplicaciones de escritorio: Para llamar a un JDialog:        JDialog1 dialogo = new JDialog1 ( this , true );        dialogo . show (); y para cerrar un JDialogo de una plicacion de escritorio se puede utilizar:        dispose (); Para llamar a un JFrame:        JFrame1 frame = new JFrame1 ();        frame . show (); Para cerrar un JFrame de una plicacion de escritorio:                 dispose ();   o tambien: System. exit (0); y si se contruye a partir de la clase JFrame se coloca el siguiente codigo en la parte publica del documento:       setDefaultCloseOperation ( EXIT_ON_CLOSE ); Espero los siguientes ejemplos les sean de mucha ayuda... Deja tu comentario o agradecimiento.