Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lectura fundamental
Contenido
2 Creación de un socket
3 Supresión de un socket
4 Enlace de un socket
8 Ejemplo de un cliente
Se define como transacción, al conjunto de comandos, que se deben realizar para ejecutar una
operación en tiempo real, por lo general sobre una base de datos.
Un ejemplo de una transacción es aquella operación que realiza un cliente de un banco cuando realiza
un retiro, o una consulta a través de un cajero automático.
¿Qué es un socket?
Para poder comprender la funcionalidad de una transacción, primero se debe entender el concepto
de socket y su funcionamiento.
Uno de los grandes aportes de la Universidad de Berkeley a las operaciones computacionales en línea,
fue la definición del socket. Para entender este concepto de una mejor manera se puede hacer un
paralelo con una conversación telefónica o una conversación usando un chat, donde cada uno de los
participantes de dicho evento está en lugares diferentes.
Se denomina dominio de un socket al conjunto de sockets con los cuales se estable comunicación. Los
protocolos de comunicación usados en los sockets son: TCP, UDP, IP. Algunos de los dominios son:
• AF_APPLETALK /* De Apple */
• AF_SNA /* IBM */
POLITÉCNICO GRANCOLOMBIANO 2
En síntesis...
En resumen, un socket es un punto de comunicación a través del cual un proceso
puede enviar o recibir información. Es lo que comúnmente se conoce como
comunicación cliente servidor.
• Conservación del orden de los datos. Los datos en el orden en que se envían
• No duplicación de datos. Al destino solo debe llegar una copia del dato enviado.
• Mensajes urgentes. Es una propiedad utilizada para enviar los datos de un mensaje, por fuera del
flujo normal. Se les denomina como “out of band”.
POLITÉCNICO GRANCOLOMBIANO 3
Algunos tipos son:
2. Creación de un socket
Para crear un socket se debe usar la primitiva socket. Esta primitiva, contiene las características del
socket a saber:
El valor devuelto es un entero (>= cuando el socket es creado correctamente ò < 0 si falló el proceso
de creación).
POLITÉCNICO GRANCOLOMBIANO 4
Ejemplo
#include <sys/types.h>
#include <sys/socket.h>
...
int transa;
...
if ((transa=socket(PF_INET,SOCK_STREAM,0))<0)
xxerror(“socket”); /* xxerror, es una librería que crea el programador para reportar errores*/
exit(0);
3. Supresión de un socket
Se define como supresión de un socket, al proceso llevado a cabo para cerrarlo, es decir cuando ya
no hay ninguna operación que posea un descriptor para accederlo. En este punto es donde se liberan
las diferentes tablas de control que utiliza el socket en la comunicación. En otras palabras, es el último
paso que se hace para cerrar una transacción.
#include <sys/types.h>
#include <unistd>
...
int transa;
...
xxerror(“socket”);
exit(0);
POLITÉCNICO GRANCOLOMBIANO 5
4. Enlace de un socket
POLITÉCNICO GRANCOLOMBIANO 6
5. Primitivas de un socket desde el punto de vista del server
Los puertos utilizados por los computadores que actúan como servidores, deben tener un puerto
asociado para el socket, porque el cliente necesita conocer el puerto en el cual está disponible el
servicio para poder establecer la conexión con el servidor.
• Puerto 22, protocolo TCP: Se usa para establecer una Shell de conexión segura SSH.
Un socket recién creado, no es accesible sino por los procesos que conocen su descriptor. La primitiva
bind, permite con una sola operación, darle nombre al socket del servidor, asociarle una dirección IP y
un puerto.
Ejemplo
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
...
int bind (int bind(int sock, struct sockaddr *p_direccion, int lg); /* socaddr require de
sockaddr_in */
bind devuelve
POLITÉCNICO GRANCOLOMBIANO 7
Incluyendo SOCADDR_IN, quedaría así:
...
int transa;
...
todas las direcciones (127.0.0.1,
192.168.101.xx, etces */
exit(0);
Una vez establecida la conexión, el servidor procede a activar la primitiva de escucha, para lo cual se
usa la función Listen(), con los parámetros siguientes:
Ejemplo:
...
int transa;
...
xxerror("listen");
exit(0);
POLITÉCNICO GRANCOLOMBIANO 8
5.3. Primitiva accept
En el momento en el que llega una petición, la función accept() se activa y recibe la petición. Si la
petición es aceptada devuelve 0, de lo contrario devuelve -1.
Parámetros:
• Estructura que debe contener el puerto y la dirección del cliente de donde viene la petición.
...
tamann=sizeof(struct sockaddr_in);
if ((transa_conectado=accept(transa, (struct
xxerror("accept");
exit(0);
De aquí en adelante, el cliente y el servidor están conetados para poder intercambiar mnesajes a
través de las primitivas Read/Write (dentro del socket se conocen como send() y recv()).
El cliente también tiene que crear un socket usando la función socket(), con sus respectivos parámetros:
• Longitud de la estructura.
POLITÉCNICO GRANCOLOMBIANO 9
...
int transa;
...
dir.sin_familia=PF_INET;
dir.sin_puerto=htons(13);
if (inet_aton("192.168.101.xx",&dir.sin_addr)==0)
xxerror("inet_aton");
exit(0);
...
xxerror("connect");
exit(0);
El cliente es quien primero escribe al servidor y lo hace con la función write(). Devuelve 0 si la
escritura fue exitosa o -1 de otra manera. El sevidor està escuchando y procede a leer. (Ver figura 2).
Ejemplo:
...
int transa, n;
char buffer[tamanno];
...
xxerror("write");
exit(0);
POLITÉCNICO GRANCOLOMBIANO 10
6.3. Primitiva read
El servidor lee, analiza, resuelve la transacción y procede a escribirle al cliente quien está atento a leer
la respuesta del servidor y lo hace con la función read(). Devuelve 0 si la lectura fue exitosa, o -1 de
otra manera. Ejemplo:
..
...
int transa, n;
char buffer[tamanno];
...
xxerror("read");
exit(0);
POLITÉCNICO GRANCOLOMBIANO 11
8. Ejemplo de un cliente
POLITÉCNICO GRANCOLOMBIANO 12
POLITÉCNICO GRANCOLOMBIANO 13
Referencias
[1] Rifflet, J., 1992. Comunicaciones en UNIX. Madrid: McGraw-Hil. Capítulo 12. Pags 234 - 271
http://eds.b.ebscohost.com.loginbiblio.poligran.edu.co:2048/eds/detail/detail?vid=7&sid=ced1619f-
3931-4b9a-b700-d9e0152b1c2b%40sessionmgr102&bdata=Jmxhbmc9ZXMmc2l0ZT1lZHMtbGl
2ZQ%3d%3d#AN=edseul.3000144295453&db=edseul
[2] JAMES TCP-IP networking: architecture, administration, and programming. Capítulo 19. Página
209 - 226
http://eds.a.ebscohost.com.loginbiblio.poligran.edu.co:2048/eds/detail/detail?vid=3&sid=fa077792-
35e9-4e28-b5c1-f34da0599e97%40sessionmgr4006&hid=4113&bdata=Jmxhbmc9ZXMmc2l0
ZT1lZHMtbGl2ZQ%3d%3d#AN=EDSBVB.BV021925626&db=edsbvb
[3] Desarrollo de componentes software para servicios de comunicaciones: UF1288. por Huércano
Ruíz, Federico, Villar Cueli, José. EDITORIAL IC Editorial. FECHA. July 2014. Páginas 148 – 166
http://site.ebrary.com.loginbiblio.poligran.edu.co:2048/lib/bibliopoligransp/reader.
action?docID=11162023&ppg=130
POLITÉCNICO GRANCOLOMBIANO 14
INFORMACIÓN TÉCNICA
POLITÉCNICO GRANCOLOMBIANO
POLITÉCNICO GRANCOLOMBIANO 15