1. 1
UNIVERSIDAD NACIONAL HERMILIO VALDIZAN
FACULTAD DE INGENIERIA INDUSTRIAL Y SISTEMAS
TEMA DE APLICACIÓN:
COMUNICACIÓN ENTRE PROCESOS
SOCKETS
PRESENTADA POR:
VALDIVIA ESCOBAR, JHONATHAN JAROLD
PEREZ TRINIDAD, DIEGO DAVID
INDICE
2. 2
1. INTRODUCCION.................................................................................................. 3
2. FUNDAMENTOS.................................................................................................. 4
3. FUNCIONAMIENTO GENÉRICO.......................................................................... 5
4.- JAVA SOCKETS.................................................................................................. 6
4.1.-TIPO DE SOCKETS........................................................................................... 7
4.2.- MODELO DE COMUNICACIONES CON JAVA................................................8
4.7.- EJEMPLO DE USO......................................................................................... 9
4.7.1.- Programa Cliente....................................................................................... 10
4.7.2.- Programa Servidor....................................................................................... 11
4.7.3.- Ejecución..................................................................................................... 12
Introducción
3. 3
Los sockets son mecanismos de comunicación entre procesos que permiten que un
proceso hable (emita o reciba información) con otro procesoincluso estando en distintas
máquinas. Una forma de conseguir que dos programas se transmitan datos.
Un socket no es más que un "canal de comunicación" entre dos programas que corren
sobre ordenadores distintos o incluso en el mismo ordenador.
Desde el punto de vista de programación, un socket no es más que un "fichero" que se
abre de una manera especial.
1.-FUNDAMENTOS
4. 4
Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de
una red, un socket es un punto de comunicación por el cual un proceso puede emitir o
recibir información. Fueron popularizados por Berckley Software Distribución, de la
universidad Norteamericana de Berkley. Los sockets han de ser capaces de utilizar el
protocolo de streams TCP (Transfer Control Protocol) y el de datagramas UDP (User
Datagram Protocol).
2.-Funcionamientogenérico
5. 5
Normalmente,unservidorse ejecutasobre unacomputadoraespecíficay tiene unsocket que
responde enunpuertoespecífico.El servidorúnicamenteespera,escuchandoatravésde socket
a que un cliente haga una petición.
En el ladodel cliente:el cliente conoce el nombre de hostde lamáquinaenlacual el servidor
se encuentraejecutandoyel númerode puertoenel cual el servidorestáconectado.Para
realizarunapeticiónde conexión,el cliente intentaencontraral servidorenlamáquina
servidoraenel puertoespecificado.
Si todo va bien, el servidor acepta la conexión. Además de aceptar, el servidor obtiene
un nuevo socket sobre un puerto diferente. Esto se debe a que necesita un nuevo socket
(y, en consecuencia, un numero de puerto diferente) para seguir atendiendo al socket
original para peticiones de conexión mientras atiende las necesidades del cliente que
se conectó.
Por la parte del cliente, si la conexión es aceptada, un socket se crea de forma
satisfactoria y puede usarlo para comunicarse con el servidor. Es importante darse
cuenta que el socket en el cliente no está utilizando el número de puerto usado para
realizar la petición al servidor. En lugar de éste, el cliente asigna un número de puerto
local a la máquina en la cual está siendo ejecutado.
Ahora el cliente y el servidor pueden comunicarseescribiendo o leyendo en o desde sus
respectivos sockets.
3. JAVA Sockets
6. 6
El paquete java.net de la plataforma Java proporciona una clase Socket, la cual
implementa una de las partes de la comunicación bidireccional entre un programa Java
y otro programa en la red.
La clase Socket se sitúa en la parte más alta de una implementación dependiente de la
plataforma, ocultando los detalles de cualquier sistema particular al programa Java.
Usando la clase java.net.Socket en lugar de utilizar código nativo de la plataforma, los
programas Java pueden comunicarse a través de la red de una forma totalmente
independiente de la plataforma.
De forma adicional, java.net incluye la clase ServerSocket, la cual implementa un
socket el cual los servidores pueden utilizar para escuchar y aceptar peticiones de
conexión de clientes.
DatagramSocket: Implementa tanto el servidor como el cliente cuando se utiliza UDP.
DatagramPacket: Implementa un datagram packet, que se utiliza para la creación de
servicios
InetAddress: Se encarga de implementar la dirección IP. La clase Socket del paquete
java.net es una implementación independiente de la plataforma de un cliente para un
enlace de comunicación de dos vías entre un cliente y un servidor. Las clases
InputStream y OutputStream del paquete java.io son superclases abstractas que definen
el comportamiento de los canales de I/O de tipo stream de Java. java.io.
Nuestro objetivo será conocer cómo utilizar las clases Socket y ServerSocket.
Por otra parte, si intentamos conectar a través de la Web, la clase URL y clases
relacionadas (URLConnection,URLEncoder)son probablemente más apropiadas que
las clases de sockets. Pero de hecho, las clases URL no son más que una conexión
Diagrama de Socket
Propiedades
Fiabilidad de la Transmisión,No se pierden los datos transmitidos.Conservación
del Orden de los Datos. Los datos llegan en el orden en que se emitieron.
7. 7
No Duplicación de los Datos. El Dato sólo llega una vez.
Comunicaciónen modo conectado. La conexión está establecida antes de iniciar
la comunicación un extremo va destinada al otro (implícitamente).
Tipos de Sockets
Existen básicamente dos tipos:
LOS NO ORIENTADOS A CONEXIÓN: El programa de aplicación da la fiabilidad
Es el más simple, lo único que se hace es enviar los datos, mediante la creación de un
socket y utilizando los métodos de envío y recepción apropiados. Se trata de un servicio
de transporte sin conexión. Son más eficientes que TCP, pero no está garantizada la
fiabilidad: los datos se envían y reciben en paquetes, cuya entrega no está garantizada;
los paquetes pueden ser duplicados, perdidos o llegar en un orden diferente al que se
envió.
LOS ORIENTADOS A CONEXIÓN. Comunicaciones fiables,Circuito Virtual
SOCK_STREAM: Para flujo son implementados en el dominio AF_INET por
conexiones TCP/IP .Son el tipo usual en el dominio AF_UNIX.
SOCK_DGRAM : Para datagramas no establecen ni mantienen una conexión también
existe un límite en el tamaño del datagrama que se puede enviar. Se transmite como
un solo mensaje en la red que se puede perder, duplicar o llegar fuera de secuencia.
3.2.- Modelo de comunicaciones con Java
El modelo de sockets más simple es:
8. 8
El servidor establece un puerto y espera durante un cierto tiempo (timeout segundos), a
que el cliente establezca la conexión. Cuando el cliente solicite una conexión, el
servidor abrirá la conexión socket con el método accept( ).
El cliente establece una conexión con la máquina host a través del puerto que se designe
en puerto#
El cliente y el servidor se comunican con manejadores InputStream y OutputStream
Servidor:
• Está ejecutándose y esperando a que otro quiera conectarse a él.
• Nunca da "el primer paso" en la conexión.
• Es el que "sirve" información al que se la pida.
Cliente:
• Es el programa que da el “primer paso” en la conexión.
• En el momento de ejecutarlo o cuando lo necesite, intenta conectarse al servidor.
• Es el que solicita información al servidor.
Arquitectura de confección
5. EJEMPLOSDEUSO
9. 9
PRIMER ENTREGA
LA CLASE SERVIDOR
Cuando se sirve al segundo cliente, automáticamente el servidor cierra la colección y
manda un mensaje “Demasiados clientes por hoy”
10. 10
LA CLASE CLIENTE
Cuando se lanza el cuarto de cliente, el servidor ya ha cortado la conexión, con lo que se
lanza una excepción.
SEGUNDAENTREGA
12. 12
El servidor recibe los mensajes y los muestra en la pantalla, hasta que uno de los
clientes envía la palabra “fin”, entonces automáticamente la colección se cierra
BIBLIOGRAFIAS
13. 13
Apuntes de la asignatura. Campus Virtual.
TCP/IP Douglas E. Comer.
Starlinux.net
http://www.starlinux.net/staticpages/index.php?page=20020720164837437