Está en la página 1de 15

PROGRAMACIN EN AMBIENTE

CLIENTE/SERVIDORES
INGENIERA INFORMTICA
UNIDAD II
Programacin Cliente-Servidor de Bajo Nivel: sockets y
canales

Socket

Un socket es un mecanismo que permite la conexin entre distintos procesos,


habitualmente se utilizan para establecer comunicaciones entre distintas
mquinas que estn conectadas a travs de la red.

Cuando utilizamos Sockets para comunicar procesos nos basamos en la


arquitectura cliente y servidor. As pues, estableceremos dos Sockets uno ser la
parte servidor y recibir la transmisin del cliente y otro ser la parte cliente que
recibir la respuesta del servidor.

Cmo funciona un Socket

El siguiente procedimiento muestra cmo funciona un Socket:

Primero: Tenemos que poner en funcionamiento el proceso que se encargar de


recibir los datos, el cual estar a la espera de recibir la comunicacin del cliente.

Segundo: Ejecutamos el proceso cliente, que ser un socket encargado de enviar


datos al servidor que se encuentra esperando nuestra conexin.

Tercero: Por ltimo, el cliente realizar una peticin al servidor y el servidor


gestionar la respuesta que quiere darle. Y finalmente, el cliente recibir la
respuesta del servidor.

2.1. Concepto de socket.

Qu

es un socket?

Es una interfaz de entrada-salida

de datos que permite la intercomunicacin entre procesos.

Los procesos pueden estar ejecutndose en el mismo o en distintos


sistemas, unidos mediante

una red.

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 crea
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_UNIX, si los
procesos 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 usase la

misma interfaz tambin para distintas familias de protocolos.


En esta introduccin slo trataremos el dominio AF_INET.

Tipos de sockets en el dominio AF_INET.


Sockets Stream
Sockets Stream son los ms utilizados, hacen uso del protocolo TCP ,el cual nos
provee un flujo de datos bidireccional, secuenciado, sin duplicacin de paquetes y
libre de errores. La especificacin del protocolo TCP se puede leer en la RFC793.
Sockets Datagram
Sockets Datagram hacen uso del protocolo UDP, el cual nos provee un flujo de datos
bidireccional,pero los paquetes pueden llegar fuera de secuencia, pueden no llegar
o contener errores.
Por lo tanto el proceso que recibe los datos debe comprobar la secuencia, eliminar
duplicados y asegurar la integridad. Se llaman tambin sockets sin conexin,
porque no hay que mantener una conexin activa, como en el caso de sockets
stream. Son utilizados para transferencia de informacin paquete por paquete,
Ejemplo: dns, tftp, bootp,etc.

Sockets Raw

Sockets raw no son para el usuario ms comn, son provistos principalmente para
aquellosinteresados en desarrollar nuevos protocolos de comunicacin o para hacer uso de
facilidades ocultas de un protocolo existente.

Byte order

Network byte order y Host byte order son dos formas en las que el sistema puede almacenarlos datos
en memoria. Estn relacionadas con el orden en que se almacenan los bytes en la memoria RAM.
Si al almacenar un short int (2 bytes) o un long int (4 bytes) en RAM, en la posicin ms alta se
almacena el byte menos significativo, entonces se trata de network byte order, caso contrario es host
byte order ..
Esto depende del microprocesador que se est utilizando, podramos estar programando en un
sistema host byte order o network byte order, pero cuando enviamos los datos por la red deben ir en
un orden especificado, si no enviaramos todos los datos al revs. Lo mismo sucede cuando recibimos
datos de la red, debemos ordenarlos al orden que utiliza nuestro sistema. Debemos cumplir las
siguientes reglas:
Todos los bytes que se transmiten hacia la red, sean nmeros IP o datos, deben estar network byte
order.
Todos los datos que se reciben de la red para ser utilizados en el procesador podran convertirse a host
byte order, dependiendo de la arquitectura del computador.

CREACIN DE UN SOCKET

Para que una persona pueda recibir llamadas debe tener instalado un telfono, para
poder realizar una conexin se debe crear un socket.
Los sockets se crean llamando a la funcin socket(), esta funcin retorna un
descriptor de socket, que es tipo int, como si fuese un manejadro de archivo (file
handler). Si hubo algn error, socket() retorna 1 y la variable global errno se
establece con un valor que indica el error que se produjo.

sockfd = socket (int dominio, int tipo, int protocolo);

Donde:
sockfd, es el descriptor de socket devuelto. Que luego se utilizar para conectarse,
recibir conexiones, enviar y recibir datos, etc. dominio, dominio donde se realiza la
conexin. Para este tutorial siempre ser AF_INET. tipo, podr ser SOCK_STREAM o
SOCK_DGRAM o SOCK_RAW; dependiendo del tipo de socket que deseamos crear.
protocolo, 0 (cero, selecciona el protocolo ms apropiado).

Cliente Servidor
TCP simple.

Referencias

http://www.codigojavaoracle.com/hardware/

arquitectura/definicion-de-socket/

También podría gustarte