Socket java
Estamos acá porque queremos conocer sobre sockets en java, pero primeramente debemos conocer específicamente que es un socket.
¿Qué es un Socket?
Socket podría tener varias definiciones, para comprenderlo mejor Socket es una palabra en idioma inglés que significa enchufe, básicamente en internet un socket significaría algo enchufar 2 maquinas que están separadas física y lógicamente, es decir es conectar remotas para que puedan comunicarse e intercambiar datos.
Como se
observa en la figura que refleja la imagen de un socket, un socket puede construirse con cualquier lenguaje de programación en nuestro caso vamos a construir socket en java.
En la figura se observan 2 maquinas un cliente y un servidor unidas por un puente virtual para tender ese puente virtual entre las 2 maquinas necesitamos dirección ip y puerto origen y dirección ip y puerto destino para poder establecer la comunicación.
También se
podría definir un socket como un puente virtual que permiten la conexión o
comunicación entre un cliente y un servidor atravez de una dirección ip y un
puerto.
Para que existen los sockets
1-
Los
sockets existen para que 2 computadoras puedan intercambiar información
2-
Para
que un cliente y un servidor puedan intercambiar información
Que define a un socket
Un socket se
define por 2 direcciones ip origen y destino y 2 puertos origen y destino
Al tema al
cual vinimos a explicar sockets en java, básicamente es usar el lenguaje de
programación java para crear sockets para conectar 2 o más maquinas.
Para
construir un socket en java necesitamos 2 aplicaciones una aplicación cliente y
una aplicación servidor, es decir una aplicación cliente servidor de cualquier
tipo puede ser de consola, gráfica o web para este caso usaremos una aplicación
gráfica que se van a comunicar con el socket que vamos a crear.
La
construcción del socket en java depende fundamentalmente de un par de variables
que sería la dirección ip del servidor y el puerto por donde van a ingresar la
información.
Construyendo las 2 aplicaciones
gráficas cliente y servidor
Suponiendo
que desarrollamos las 2 aplicaciones cliente servidor, las aplicaciones como
mencionamos anteriormente pueden ser aplicaciones de consola, gráficas o web,
en lo que respecta este articulo está basado en construir Sockets
específicamente con el lenguaje de programación java no se enfoca en construir
la aplicación gráfico lo que quieren decir que podemos crear las interfaces
gráficas por su cuenta o usar las aplicaciones gráficas que dejamos a disposición.
Por los
momentos la aplicación gráfica consiste en un cliente en el cual se va a
escribir un texto y el mismo va a viajar a la aplicación servidor que está a la
derecha por medio de un socket construido con java. Se deja claro que el objetivo
de este artículo no es enseñar a crear una aplicación gráfica. El objetivo es
enseñar a construir el socket en java
Construyendo el socket java cliente
1- Para construir un socket en java lo primero que hay que importar el paquete java.net con todas sus clases preferiblemente
2- Luego
crear un objeto de la clase Socket podemos resumir toda la creación del socket
java con esta instrucción Socket misocket=new
Socket("192.168.0.17", 9999); y como el método constructor lanza una
excepción debemos tener esto en cuenta a la hora de crear el socket en java.
En
resumen una vez importado todo el paquete java.net tenemos más que suficiente
para crear nuestro socket en java, construir el socket es tan solo el primer
paso ya que solamente el socket es tender el puente por donde van a circular
los datos, básicamente crear el socket es crear un objeto de la clase Socket y
pasarle como parámetros dos argumentos la dirección ip y puerto del servidor al
cual vamos a enviar los datos, todo eso usando el método constructor de la
clase Socket
Construyendo el flujo de datos de
salida
Ya construimos el socket java es decir el canal por donde van a circular los datos ahora solamente tenemos que crear el flujo de datos que va a circular dentro del socket java. Para construir el flujo de salida creamos un objetos de la clase DataOutputStream por ejemplo el objeto flujo_salida
DataOutputStream flujo_salida;
El constructor de la clase DataOutputStream requiere un objeto
OutputStream
Ya que el método constructor de la clase DataOutputStream requiere un
objeto de tipo OutputStream revisamos la api de java y observamos que en la
clase Socket entre sus métodos tiene un método getOutputStream que devuelve un
objeto del tipo que nos pide la constructor de la clase DataOutputStream, como
podemos observar para construir nuestro socket java hay que usar varias clases.
El método getOutputStream devuelve el objeto que requiere la clase DataOutputStream
Como podemos observar en la imagen la programación realizada para construir
nuestro Socket en java.
Vamos a realizar un resumen de cómo construir nuestro socket en java
esencialmente el java socket. Resumido en pasos
1-
Creamos
un objeto de la clase Socket el cual se llama misocket el cual recibe como
parámetros la dirección ip del servidor y el puerto por el cual va a introducir
la información. En este punto es como haber tendido el puente virtual desde el
cliente al servidor
2-
Creamos
el flujo de salida que va del cliente al servidor con el objeto flujo de salida
de la clase DataOutputStream, el método constructor de la clase
DataOutputStream recibe como parámetro un objeto OutputStream. Entonces el
método getOutputStream devuelve un OutpuStream es decir flujo de salida de este
Socket misocket que viene a ser el socket misocket por el cual va a circular el
flujo de salida.
La construcción de un socket en java
es un arte
Lo que quiere decir esta
instrucción es que: hemos construido un flujo_salida de este tipo
DataOutputStream el cual va a circular por este Socket misocket.
En la siguiente imagen observamos el objeto flujo_salida que lo quiere decir es escribe en el flujo_salida lo que hay en campo1.getText
De esta
manera casi terminamos, lo que falta por programar nuestro socket en java es
cerrar el flujo
Cerrando el
flujo terminamos de programar nuestro nuestro socket java cliente.
Creando Socket java servidor
El socket
java servidor debe realizar 2 tareas
1-
Recibir
el texto que le va a enviar el cliente
2-
En
segundo plano el servidor java socket tendrá que mantenerse a la escucha
manteniendo el puerto 9999 abierto
Tenemos que
hacer que la clase que construye el marco donde se va a observar el texto se
mantenga permanentemente a la escucha.
¿Cómo
conseguimos esto?
Implementamos
la interfaz Runnable y sobre escribir los métodos de la interfaz
Al
implementar la interfaz Runnable se crea el método run y el código que se va a
mantener a la escucha debe ir dentro de este método anexo imagen
Creamos el
hilo en nuestro servidor socket java
Colocar el
servidor a la escucha en el puerto 9999
Como
observaremos en la imagen que está abajo creamos el objeto servidor de tipo
ServerSocket esa clase tiene un método constructor que recibe un parámetro de
tipo int en el cual se indica el puerto que va a estar a la escucha
El siguiente paso que vamos a ejecutar en nuestro socket java servidor es aceptar las conexiones que provengan del exterior para esto visitamos la api java y usamos el método accept que devuelve un socket
Procedemos
de la siguiente manera
Socket
misocket=servidor.accept();
El siguiente paso sería crear el
flujo de entrada
Con estas instrucciones tenemos nuestro socket java creado especificando nuestro java socket servidor.













Comentarios
Publicar un comentario