-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLeeme.txt
152 lines (94 loc) · 5.01 KB
/
Leeme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Autores: Alfredo Fanghella 12-10967
Georvic Tur 12-11402
Archivos que componen este proyecto:
servidor.c
cliente.c
mensajes.h
configuracion.h
conjunto_hash.c
conjunto_hash.h
Makefile
test_hash.c
Para compilar el servior y el cliente sólo ha de dirigirse en el terminal
al directorio que contenga esos arhivos y ejecutar la orden:
make
Si quiere compilar el proyecto con la intención de hacer debugging, use
la opción DEBUG:
make DEBUG=1
Descripción de Cada Archivo:
servidor.c
Contenido y Función
Este archivo contiene el programa principal de la aplicación servidor
que corre en la computadora principal. Dicho programa usa un socket
para escuchar y atender a cualquier conexión entrante por el puerto
indicado en su dirección IP. Luego se queda en un bucle infinito
esperando por una solicitud. Si la recibe, entonces la procesa
dependiendo de si es de entrada o de salida. Si se manda una SIGINT,
se pasa el control a una rutina manejadora de señales que termina
el programa de manera adecuada. Guarda las operaciones de entrada
en una bitácora de entrada y las de salida y una bitácora de salida.
Ejecución
Se puede llamar usando la siguiente orden:
sem_svr -l <puerto a servir> -i <bitácora de entrada> -o <bitácora de salida>\n
El orden de las opciones con sus sendos argumentos no es importante.
Lo importante es que cada opción esté a la izquierda del argumento que
espera.
Consideraciones Especiales
Se debe introducir un puerto válido.
No hay restricciones sobre el nombre de los archivos.
Los arhivos se abren con la opción 'w'. Se deben respaldar antes de
que el servidor se vuelva a activar.
Dependencias: conjunto_hash.c; conjunto_hash.h; mensajes.h; configuracion.h
cliente.c
Contenido y Función
Este archivo contiene el programa principal de la aplicación cliente
que corre en la computadora de cada puerta del estacionamiento.
El cliente se activa si el conductor presiona el botón o si introduce
un ticket. De activarse, el cliente usa un socket para enviarle su
solicitud al servidor. Luego de recibir su respuesta, termina e
imprime el resultado de la misma.
Ejecución
sem_cli -d <dirección IP o nombre de dominio> -p <puerto> -c <acción> -i <identificador de vehículo>
El orden de las opciones con sus sendos argumentos no es importante.
Lo importante es que cada opción esté a la izquierda del argumento que
espera.
Consideraciones Especiales
El puerto introducido tiene que ser válido.
El identificador usado tiene que ser menor a UINT32_MAX
La acción sólo puede ser un caracter 's' (salida) o 'e' (entrada)
Dependencias: cliente.c; mensajes.h; configuracion.h
conjunto_hash.c
Contenido
Contiene la implementación de las operaciones para una estructura de
datos de tipo conjunto usando una tabla de hash estática.
Dependencias: conjunto_hash.h
conjunto_hash.h
Contenido
Contiene la definición de la estructura de datos hash_elem y conjunto.
También contiene la declaración de las subrutinas implementadas en
conjunto_hash.c.
mensajes.h
Contenido
Contiene la definición de las estructuras de datos que representan
los formatos de los mensajes. Estas estructuras se usan directamente
en los sendto y recvfrom para enviar la información.
Condiciones Particulares
Cabe destacar que el campo anyo en la estructura de mensaje_s es el
número de años desde 1900.
Ambas estructuras usan un campo de padding que sólo se usa para
dar el tamaño correcto de la estructura al enviarla.
configuracion.h
Contenido
Contiene la definición de constantes importantes como el número
máximo de puestos del estacionamiento, el número de puertos o el
tiempo máximo de espera en el uso de recvfrom para el cliente.
Makefile
Makefile para compilar el programa del cliente y el del servidor.
test_hash.c
Contenido y Función
Implementa cuatro pruebas unitarias para la estructura de datos usada.
El buen funcionamiento de esta estructura es el basamento fundamental
para el servidor. Se ha incluido para llevar el control del proyecto.
Ejecución
make test_hash
Compilará las pruebas y las ejecutará.