Академический Документы
Профессиональный Документы
Культура Документы
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
Palabras claves
socket, transacción, programación, creación, supresión.
1. Conceptos fundamentales de transacción.
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 con-
cepto de socket y su funcionamiento.
Se denomina dominio de un socket al conjunto de sockets con los cuales se estable comunica-
ció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 */
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.
POLITÉCNICO GRANCOLOMBIANO 2
1.3 Tipos de sockets para comunicaciones
B. Conservación del orden de los datos. Los datos en el orden en que se envían.
C. No duplicación de datos. Al destino solo debe llegar una copia del dato enviado.
F. 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”.
c. SOCK_RAW. /* Se usa con protocolos de red más bajos como IP. Es un tipo de
uso reservado para súper usuarios (root) */
POLITÉCNICO GRANCOLOMBIANO 3
2. Creación de un socket
Para crear un socket se debe usar la primitiva socket. Ésta primitiva, contiene las características
del socket a saber:
F. Dirección de red.
G. Número de puerto.
El valor devuelto es un entero (>= cuando el socket es creado correctamente ò < 0 si falló el
proceso de creación).
• Ejemplo:
Tabla 1. Creación de un socket
#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);
}
POLITÉCNICO GRANCOLOMBIANO 4
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 pala-
bras, es el último paso que se hace para cerrar una transacción.
4. Enlace de un socket
POLITÉCNICO GRANCOLOMBIANO 5
El enlace de un socket se conoce como la sincronización de un computador remoto, por lo gene-
ral el computador cliente y un servidor local o viceversa, como se aprecia en la figura 1. El enlace
se estable una vez el socket haya sido credo.
• Puerto 22, protocolo TCP: Se usa para establecer una Shell de conexión segura SSH.
POLITÉCNICO GRANCOLOMBIANO 6
5.1 Primitiva bind
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:
Tabla 3. Primitiva bind
#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
5.2 Primitiva listen
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:
• Descriptor de escucha del socket.
• Tamaño de la cola de peticiones para aceptar.
• Ejemplo:
Tabla 4. Primitiva listen
...
int transa;
...
if (listen(transa, 5)!=0) /* 5 es el tamaño de la cola de mensajes */
{
xxerror(“listen”);
exit(0);
}
Fuente: Rojas, Alexis (2017)
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:
• Nombre del socket asociado a la petición.
• Estructura que debe contener el puerto y la dirección del cliente de donde viene la petición.
• Tamaño a la estructura del socket.
De aquí en adelante, el cliente y el servidor están conectados para poder intercambiar mensajes a
través de las primitivas Read/Write (dentro del socket se conocen como send() y recv()).
POLITÉCNICO GRANCOLOMBIANO 8
6. Primitivas de un socket desde el punto de vista del Cliente
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
6.2 Primitiva write
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 servidor está escuchando y procede a leer. (Ver
figura 2). Ejemplo:
Tabla 7. Primitiva write
…
#define tamanno 200
...
int transa, n;
char buffer[tamanno];
...
if ((n=write(transa, buffer, tamanno))<0)
{
xxerror(“write”);
exit(0);
}
Fuente: Rojas, Alexis (2017)
POLITÉCNICO GRANCOLOMBIANO 10
7. Ejemplo completo de un servidor
Tabla 9. Ejemplo completo de un servidor
Fuente: Huércano Ruíz, Federico; Villar Cueli, José. (2014). Página 161
POLITÉCNICO GRANCOLOMBIANO 11
8. Ejemplo de un cliente.
Tabla 10. Ejemplo de un cliente.
Fuente: Huércano Ruíz, Federico; Villar Cueli, José. (2014). Página 162
POLITÉCNICO GRANCOLOMBIANO 12
Referencias
Rifflet, J., 1992. Comunicaciones en UNIX. Madrid: McGraw-Hil. Capítulo 12. Pags 234 – 271.
Recuperado de: http://eds.b.ebscohost.com.loginbiblio.poligran.edu.co:2048/eds/detail/detai-
l?vid=7&sid=ced1619f-3931-4b9a-b700-d9e0152b1c2b%40sessionmgr102&bdata=Jmxhbmc-
9ZXMmc2l0ZT1lZHMtbGl2ZQ%3d%3d#AN=edseul.3000144295453&db=edseul
JAMES TCP-IP networking: architecture, administration, and programming. Capítulo 19. Página
209 – 226. Recuperado de: http://eds.a.ebscohost.com.loginbiblio.poligran.edu.co:2048/eds/
detail/detail?vid=3&sid=fa077792-35e9-4e28-b5c1-f34da0599e97%40sessionmgr4006&hi-
d=4113&bdata=Jmxhbmc9ZXMmc2l0ZT1lZHMtbGl2ZQ%3d%3d#AN=EDSBVB.BV021925626&d-
b=edsbvb
Huércano Ruíz, Federico; Villar Cueli, José. (2014). Desarrollo de componentes software para
servicios de comunicaciones: UF1288. EDITORIAL IC Editorial. FECHA. July 2014. Páginas 148 –
166. Recuperado de: http://site.ebrary.com.loginbiblio.poligran.edu.co:2048/lib/bibliopoligransp/
reader.action?docID=11162023&ppg=130
POLITÉCNICO GRANCOLOMBIANO 13
INFORMACIÓN TÉCNICA
POLITÉCNICO GRANCOLOMBIANO 14