Los Sockets En Java
Enviado por olykei07 • 19 de Febrero de 2012 • 2.190 Palabras (9 Páginas) • 1.199 Visitas
Contenido
Introducción 2
LOS SOCKETS 2
Introducción
La programación y las telecomunicaciones están ligadas en algunos aspectos, si, aunque no lo puedas creer, pero hay un fundamento principal que hace que estas dos áreas tengan algo en particular y son los sockets, para que se pueda entender el porqué de lo anterior, a lo largo de esta documentación se justificara, ya que más que nada es importante saber la aplicación de los sockets, debido a la importancia que tiene en las aplicaciones finales (por ejemplo: juegos) que utiliza un usuario, ya que es de gran importancia saber todo sobre los sockets relacionados a java, modelo tcp/ip y el modelo cliente servidor.
LOS SOCKETS
El origen de los socket tuvo lugar en una variante del sistema operativo Unix conocida como BSD Unix. En la Universidad de Berkeley, en los inicios del Internet, pronto se hizo evidente que los programadores necesitarían un medio sencillo y eficaz para escribir programas capaces de intercomunicarse entre sí. Esta necesidad dio origen a la primera especificación e implementación de sockets.
Los sockets (zócalos, referido a los enchufes de conexión de cables) son mecanismos de comunicación entre programas a través de una red TCP/IP donde dos programas (posiblemente situados en computadoras distintas) pueden intercambiarse cualquier flujo de datos, generalmente de manera fiable y ordenada.
Los sockets proporcionan una comunicación de dos vías, punto a punto entre dos procesos. Los sockets son muy versátiles y son un componente básico de comunicación entre interprocesos e intersistemas. Un socket es un punto final de comunicación al cual se puede asociar un nombre, de hecho, al establecer una conexión vía Internet estamos utilizando sockets: los sockets realizan la interface entre la aplicación y el protocolo TCP/IP.
Dichos mecanismos pueden tener lugar dentro de la misma máquina o a través de una red. Se usan en forma cliente-servidor: cuando un cliente y un servidor establecen una conexión, lo hacen a través de un socket.
Los sockets residen en la capa de sesión. La capa de sesión se encuentra entre las capas de aplicación y las de comunicación de datos de bajo nivel. La capa de sesión provee servicios de manejo y control del flujo de datos entre dos ordenadores.
Podemos realizar un símil con una llamada telefónica. El teléfono es un interfaz de red y el usuario no requiere conocer los detalles de cómo la voz es transportada. Del mismo modo, un socket actúa como una interfaz de alto nivel que esconde la complejidad de transmitir 1s y 0s a través de los canales desconocidos.
Para lograr tener un socket es necesario que se cumplan ciertos requisitos
1. Que un programa sea capaz de localizar al otro.
2. Que ambos programas sean capaces de intercambiarse información.
Por lo que son necesarios tres recursos que originan el concepto de socket
a) Un protocolo de comunicaciones, que permite el intercambio de octetos.
b) Una dirección del Protocolo de Red que identifica una computadora.
c) Un número de puerto, que identifica a un programa dentro de una computadora.
Con un socket se logra implementar una arquitectura cliente-servidor donde la comunicación es iniciada por uno de los programas (cliente). Mientras el segundo programa espera a que el otro inicie la comunicación (servidor). Un Socket es un archivo existente en el cliente y en el servidor.
Si el cliente lanza una demanda de conexión y el servidor acepta la conexión, este abre un socket en un puerto diferente, para que pueda continuar escuchando en el puerto original nuevas peticiones de conexión, mientras que atiende a las peticiones del cliente conectado. El cliente y el servidor pueden ahora comunicarse escribiendo o leyendo en sus respectivos sockets.
Para tener más en claro el funcionamiento del modelo cliente-servidor, a continuación, explicaremos por separado el funcionamiento del cliente y del servidor:
El Cliente actúa de la siguiente forma.
1) Establece una conexión con el servidor (Crea un socket con el servidor).
2) Mandar mensajes al servidor o Esperar un mensaje de él. (Consultas)
3) Esperar su respuesta o contestarle (existen casos en que este paso no es necesario).
4) Repetir los pasos 2 y 3 mientras sea necesario.
5) Cerrar la conexión con el servidor.
El servidor actúa así.
1) Inicializa un puerto de comunicación, en espera de clientes que intenten conectarse a él (Crea un serverSocket).
2) Una vez que se conecta alguien, crea un hilo de ejecución para este usuario mientras que el thread principal vuelve al paso Esto comúnmente se hace para que el servidor puede atender a varios clientes al mismo tiempo.
3) Se comunica con el cliente mediante el socket creado entre el cliente y él.
4) Espera que el cliente se vaya o lo bota el mismo servidor (Cierra el socket entre ellos) y elimina el thread de comunicación entre ellos.
Las propiedades de un socket dependen de las características del protocolo en el que se implementan. El protocolo más utilizado es TCP, aunque también es posible utilizar UDP o IPX. Gracias al protocolo TCP, los sockets tienen las siguientes propiedades:
I. Orientado a conexión. Se garantiza la transmisión de todos los octetos sin errores ni omisiones.
II. Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha transmitido.
Los tipos de socket definen las propiedades de comunicación visibles para la aplicación. Los procesos se comunican solamente entre los sockets del mismo tipo. Existen tres tipos básicos de sockets.
Socket de flujo
Da un flujo de datos de dos vías, confiable, y sin duplicados sin límites de grabación. El flujo opera en forma parecida a una conversación telefónica. El tipo del socket es SOCK_STREAM, el cual en el dominio de Internet usa TCP (Transmission Control Protocol).
Socket de datagrama
Soporta un flujo de mensajes de dos vías. En un socket de datagrama podría recibir mensajes en diferente orden de la secuencia de la cual los mensajes fueron enviados. Los límites de grabación en los datos son preservados. Los sockets de datagrama operan parecidos a pasar cartas hacia adelante y hacia atrás en el correo. El tipo de socket es SOCK_DGRAM, el cual en el dominio de internet usa UDP (User Datagram Protocol).
Socket de paquete secuencial
Da una conexión de dos vías, secuencial y confiable para datagramas de una longitud fija máxima. El tipo
...