Você está na página 1de 9

INSTITUTO TECNOLGICO DE COMITANCILLO

MATERIA:
PROGRAMACION EN AMBIENTE CLIENTE-SERVIDOR

PROFESOR:
LIC. ISIDRO LOPEZ RUIZ

PRESENTA:
ALEXIS GIRON CABRERA
ADULJAMITH ROJAS PEREZ

INVESTIGACION 2 UNIDAD:
Programacion Cliente-Servidor de Bajo Nivel: sockets y canales

CARRERA:
ING. EN INFOMATICA
7: SEMESTRE GRUPO: B

2.1 CONCEPTO DE SOCKET


Un socket es un punto final de un proceso de comunicacin. Es una abstraccin
que permite manejar de una forma sencilla la comunicacin entre procesos,
aunque estos procesos se encuentren en sistemas distintos, sin necesidad de
conocer el funcionamiento de los protocolos de comunicacin subyacentes.
Los sockets son un sistema de comunicacin entre procesos de diferentes
mquinas de una red. Ms exactamente, un socket es un punto de
comunicacin por el cual un proceso puede emitir o recibir informacin.
El socket es la abstraccin software que se usa para representar los
"terminales"
de una conexin entre dos mquinas. Para una conexin dada, hay un socket
en
cada mquina, y se puede imaginar un "cable" hipottico entre las dos
mquinas,
estando cada uno de los extremos del "cable" enchufados al socket. Por
supuesto,
se desconoce completamente el hardware fsico y el cableado entre mquinas.
Lo
fundamental de esta abstraccin es que no hay que saber nada ms que lo
necesario.

2.2 DOMINIOS Y TIPOS DE SOCKETS


Dominios de comunicacin.
Los sockets se crean dentro de un dominio de comunicacin, igual que un archivo se cr
ea dentro de un filesystem. El dominio de comunicacin nos dice dnde se
encuentran los procesos que se van a intercomunicar.

Si los procesos estn en el mismo sistema, el dominio de comunicacin ser AF_UNI


X, si losprocesos estn en distintos sistemas y stos se hallan unidos mediante una red
TCP/IP, el dominio de comunicacin ser AF_INET.
Cabe aclarar que existen otros dominios de comunicacin.
Los sockets no se han diseado solamente para TCP/IP. La idea original fue que se usa
se la misma interfaz tambin para distintas familias de protocolos.
Tipos de Sockets
El tipo de sockets describe la forma en la que se transfiere informacin a travs
de ese socket. Existen muchos tipos de sockets, sin embargo, los ms
populares son:

Stream (TCP)
Datagram (UDP)
Raw (acceso directo al protocolo: root)
Socket Stream
Son un servicio orientado a la conexin, donde los datos se transfieren sin
encuadrarlos en registros o bloques, asegurndose de esta manera que los
datos lleguen al destino en el orden de transmisin. Si se rompe la conexin
entre los procesos, stos sern informados de tal suceso para que tomen las
medidas oportunas, por eso se dice que estn libres de errores.
El protocolo de comunicaciones con streams es un protocolo orientado a
conexin, ya que para establecer una comunicacin utilizando el protocolo TCP
(Transmission Control Protocol), hay que establecer en primer lugar una
conexin entre un par de sockets. Mientras uno de los sockets atiende
peticiones de conexin (servidor), el otro solicita una conexin (cliente). Una
vez que los dos sockets estn conectados, se pueden utilizar para transmitir
datos en ambas direcciones.
Socket Datagram
Son un servicio de transporte no orientado a la conexin. Son ms eficientes
que TCP, pero en su utilizacin no est garantizada la fiabilidad. Los datos se
envan 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.

Las comunicaciones a travs de datagramas usan UDP (User Datagram


Protocol), lo que significa que, cada vez que se enven datagramas es
necesario enviar el descriptor del socket local y la direccin del socket que
debe recibir el datagrama. Como se puede ver, hay que enviar datos
adicionales cada vez que se realice una comunicacin, aunque tiene la ventaja
de que se pueden indicar direcciones globales y el mismo mensaje llegar a un
muchas mquinas a la vez.
Socket Raw
Son sockets que dan acceso directo a la capa de software de red subyacente o
a protocolos de ms bajo nivel. Se utilizan sobre todo para la depuracin del
cdigo de los protocolos.

2.3 IMPLEMENTACION Y SUPRESION DE SOCKETS


Creacin
Cuando se escriben programas Java que se comunican a travs de la red, se
est
programando en la capa de aplicacin.
Tpicamente, no se necesita trabajar con las capas TCP y UDP, en su lugar se
puede utilizar las clases del paquete java.net. Estas clases
proporcionan comunicacin de red independiente del sistema.
Implementacin
Supresin
Siempre deberemos cerrar los canales de entrada y salida que se hayan abierto
durante la
ejecucin de la aplicacin.
Es importante destacar que el orden de cierre es relevante. Es decir, se deben
cerrar
primero los streams relacionados con un socket antes que el propio socket, ya
que de esta forma
evitamos posibles errores de escrituras o lecturas sobre descriptores ya
cerrados.
- Socket: Implementa un extremo de la conexin TCP.
- ServerSocket: Se encarga de implementar el extremo Servidor de la conexin
en la
que se esperarn las conexiones de los clientes.
- DatagramSocket: Implementa tanto el servidor como el cliente cuando se
utiliza UDP.
- DatagramPacket: Implementa un datagram packet, que se utiliza para la
creacin de
servicios de reparto de paquetes sin conexin.
Servidor
Socket miServicio;
try {
miServicio = new ServerSocket( numeroPuerto );
} catch( IOException e ) {
System.out.println( e );
}
Cliente
Socket miCliente;
try {

miCliente = new Socket( "maquina",numeroPuerto );


} catch( IOException e ) {
System.out.println( e );
}

Implementar un Servidor
A la hora de la implementacin de un servidor tambin necesitamos crear un
objeto
socket desde el ServerSocket para que est atento a las conexiones que le
puedan realizar
clientes potenciales y poder aceptar esas conexiones:
Socket socketServicio = null;
try {
socketServicio = miServicio.accept();
} catch( IOException e ) {
System.out.println( e );
}
Streams
DataInputStream entrada;
try {
entrada =
new DataInputStream( socketServicio.getInputStream() );
} catch( IOException e ) {
System.out.println( e );
}
PrintStream salida;
try {
salida = new PrintStream( miCliente.getOutputStream() );
} catch( IOException e ) {
System.out.println( e );
}
Cerrar Sockets
En la parte del cliente:
try {
salida.close();
entrada.close();
miCliente.close();
} catch( IOException e ) {
System.out.println( e );

}
Y en la parte del servidor:
try {
salida.close();
entrada.close();
socketServicio.close();
miServicio.close();
} catch( IOException e ) {
System.out.println( e );
}

2.4 DESARROLLO DEL LADO DEL SERVIDOR CON SOCKETS

Codigo fuente del servidor

2.5 DESARROLLO DEL LADO DEL CLIENTE CON SOCKETS

Você também pode gostar