|
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
|
}
Header de la clase \hyperlink{class_server}{Server}.
{\ttfamily \#include \char`\"{}Socket.\-h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}Socket\-Exception.\-h\char`\"{}}\\*
{\ttfamily \#include $<$iostream$>$}\\*
{\ttfamily \#include $<$sstream$>$}\\*
{\ttfamily \#include $<$signal.\-h$>$}\\*
{\ttfamily \#include $<$fstream$>$}\\*
{\ttfamily \#include $<$list$>$}\\*
\subsection*{Clases}
\begin{DoxyCompactItemize}
\item
class \hyperlink{class_server}{Server}
\begin{DoxyCompactList}\small\item\em Clase de aplicación servidor. \end{DoxyCompactList}\item
struct \hyperlink{structthread__args}{thread\-\_\-args}
\begin{DoxyCompactList}\small\item\em Argumentos de los threads. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{'defines'}
\begin{DoxyCompactItemize}
\item
\#define \hyperlink{server_8h_a0240ac851181b84ac374872dc5434ee4}{N}~5
\begin{DoxyCompactList}\small\item\em Numero de conexiones permitidas activas (en espera o activas) \end{DoxyCompactList}\item
\#define \hyperlink{server_8h_ad22e7f0ef164a8dafb32f779f737a1bd}{C\-O\-N\-F\-F\-I\-L\-E}~\char`\"{}socket.\-conf\char`\"{}
\begin{DoxyCompactList}\small\item\em Ruta al fichero de configuración. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Funciones}
\begin{DoxyCompactItemize}
\item
void \hyperlink{server_8h_ab99831172d1d4bca2c79bb37c7c062df}{kill\-Thread} (\hyperlink{structthread__args}{thread\-\_\-args} $\ast$t\-\_\-arg)
\begin{DoxyCompactList}\small\item\em Método de finalización de Threads. \end{DoxyCompactList}\item
void $\ast$ \hyperlink{server_8h_a7d13c650ec7a525ad17cabba4f371745}{Worker\-Thread} (void $\ast$args)
\begin{DoxyCompactList}\small\item\em Método gestión de conexiones. \end{DoxyCompactList}\item
void \hyperlink{server_8h_aa6328bc358b87d3e11c3f460d6427c5b}{process\-Text} (string $\ast$str)
\begin{DoxyCompactList}\small\item\em Método auxiliar de procesado de texto. \end{DoxyCompactList}\item
bool \hyperlink{server_8h_a4f850f08d755a0d0ebe936b5b84975e3}{read\-Conf} (string $\ast$ip, int $\ast$port)
\begin{DoxyCompactList}\small\item\em Método de lectura de configuración. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection{Descripción detallada}
Header de la clase \hyperlink{class_server}{Server}. \begin{DoxyAuthor}{Autor}
Imanol Barba Sabariego
\end{DoxyAuthor}
\begin{DoxyDate}{Fecha}
11/06/2013
\end{DoxyDate}
En este fichero se define la clase \hyperlink{class_server}{Server} y algunos métodos globales usados por ésta para la gestión de threads y otros aspectos.
\subsection{Documentación de los 'defines'}
\hypertarget{server_8h_ad22e7f0ef164a8dafb32f779f737a1bd}{\index{server.\-h@{server.\-h}!C\-O\-N\-F\-F\-I\-L\-E@{C\-O\-N\-F\-F\-I\-L\-E}}
\index{C\-O\-N\-F\-F\-I\-L\-E@{C\-O\-N\-F\-F\-I\-L\-E}!server.h@{server.\-h}}
\subsubsection[{C\-O\-N\-F\-F\-I\-L\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define C\-O\-N\-F\-F\-I\-L\-E~\char`\"{}socket.\-conf\char`\"{}}}\label{server_8h_ad22e7f0ef164a8dafb32f779f737a1bd}
Ruta al fichero de configuración.
Ruta relativa o absoluta al fichero de configuración, de no existir o ser inválido el programa no funcionará. \hypertarget{server_8h_a0240ac851181b84ac374872dc5434ee4}{\index{server.\-h@{server.\-h}!N@{N}}
\index{N@{N}!server.h@{server.\-h}}
\subsubsection[{N}]{\setlength{\rightskip}{0pt plus 5cm}\#define N~5}}\label{server_8h_a0240ac851181b84ac374872dc5434ee4}
Numero de conexiones permitidas activas (en espera o activas)
|
|
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
|
\subsection{Documentación de las funciones}
\hypertarget{server_8h_ab99831172d1d4bca2c79bb37c7c062df}{\index{server.\-h@{server.\-h}!kill\-Thread@{kill\-Thread}}
\index{kill\-Thread@{kill\-Thread}!server.h@{server.\-h}}
\subsubsection[{kill\-Thread}]{\setlength{\rightskip}{0pt plus 5cm}void kill\-Thread (
\begin{DoxyParamCaption}
\item[{{\bf thread\-\_\-args} $\ast$}]{t\-\_\-arg}
\end{DoxyParamCaption}
)}}\label{server_8h_ab99831172d1d4bca2c79bb37c7c062df}
Método de finalización de Threads.
Éste método se ejecuta para liberar la memoria de los argumentos del thread y mandarlo a la pila de threads terminados.
\begin{DoxyParams}{Parámetros}
{\em t\-\_\-arg} & Puntero al struct que contiene los argumentos del thread \\
\hline
\end{DoxyParams}
\hypertarget{server_8h_aa6328bc358b87d3e11c3f460d6427c5b}{\index{server.\-h@{server.\-h}!process\-Text@{process\-Text}}
\index{process\-Text@{process\-Text}!server.h@{server.\-h}}
\subsubsection[{process\-Text}]{\setlength{\rightskip}{0pt plus 5cm}void process\-Text (
\begin{DoxyParamCaption}
\item[{string $\ast$}]{str}
\end{DoxyParamCaption}
)}}\label{server_8h_aa6328bc358b87d3e11c3f460d6427c5b}
Método auxiliar de procesado de texto.
Éste método usa para procesar las entradas de texto del fichero de configuración para adaptarlas a un formato adecuado.
{\itshape De momento se limita a eliminar whitespace (tabulaciones, saltos de línea y espacios).}
\begin{DoxyParams}{Parámetros}
{\em str} & Línea de texto a procesar \\
\hline
\end{DoxyParams}
\hypertarget{server_8h_a4f850f08d755a0d0ebe936b5b84975e3}{\index{server.\-h@{server.\-h}!read\-Conf@{read\-Conf}}
\index{read\-Conf@{read\-Conf}!server.h@{server.\-h}}
\subsubsection[{read\-Conf}]{\setlength{\rightskip}{0pt plus 5cm}bool read\-Conf (
\begin{DoxyParamCaption}
\item[{string $\ast$}]{ip, }
\item[{int $\ast$}]{port}
\end{DoxyParamCaption}
)}}\label{server_8h_a4f850f08d755a0d0ebe936b5b84975e3}
Método de lectura de configuración.
Éste método lee el fichero de configuración espeficado para obtener parámetros de configuración para el funcionamiento del servidor.
\begin{DoxyParams}{Parámetros}
{\em ip} & Puntero donde se almacena la I\-P leída \\
\hline
{\em port} & Puntero donde se almacena el puerto leído \\
\hline
\end{DoxyParams}
\hypertarget{server_8h_a7d13c650ec7a525ad17cabba4f371745}{\index{server.\-h@{server.\-h}!Worker\-Thread@{Worker\-Thread}}
\index{Worker\-Thread@{Worker\-Thread}!server.h@{server.\-h}}
\subsubsection[{Worker\-Thread}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ Worker\-Thread (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{args}
\end{DoxyParamCaption}
)}}\label{server_8h_a7d13c650ec7a525ad17cabba4f371745}
Método gestión de conexiones.
Éste método es el que los threads ejecutan al crearse, aquí es donde se define el comportamiento del servidor, ya que cada conexión se gestionará como aquí se detalla.
{\itshape Por defecto, el comportamiento que lleva programado es el de un servidor \char`\"{}echo\char`\"{}, esperará que el cliente le envíe un mensaje y responderá con el mismo mensaje.}
\begin{DoxyParams}{Parámetros}
{\em args} & Puntero al struct de los argumentos del thread casteado a tipo void$\ast$ \\
\hline
\end{DoxyParams}
|