\hypertarget{main__server_8cpp}{\section{Referencia del Archivo /home/imanol/devel/eclipse/\-P\-A\-D/\-Socket/src/main\-\_\-server.cpp}
\label{main__server_8cpp}\index{/home/imanol/devel/eclipse/\-P\-A\-D/\-Socket/src/main\-\_\-server.\-cpp@{/home/imanol/devel/eclipse/\-P\-A\-D/\-Socket/src/main\-\_\-server.\-cpp}}
}


Implementación del servidor.  


{\ttfamily \#include \char`\"{}server.\-h\char`\"{}}\\*
{\ttfamily \#include $<$sys/types.\-h$>$}\\*
{\ttfamily \#include $<$unistd.\-h$>$}\\*
{\ttfamily \#include $<$sstream$>$}\\*
\subsection*{Funciones}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{main__server_8cpp_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{main__server_8cpp_a7d13c650ec7a525ad17cabba4f371745}{Worker\-Thread} (void $\ast$args)
\begin{DoxyCompactList}\small\item\em Método gestión de conexiones. \end{DoxyCompactList}\item 
void \hyperlink{main__server_8cpp_a5ee86dec2f1282750e7b1da928d45dbc}{stop\-Server} (int signal)
\begin{DoxyCompactList}\small\item\em Método de detención del servidor. \end{DoxyCompactList}\item 
void \hyperlink{main__server_8cpp_aa6328bc358b87d3e11c3f460d6427c5b}{process\-Text} (string $\ast$str)
\begin{DoxyCompactList}\small\item\em Método auxiliar de procesado de texto. \end{DoxyCompactList}\item 
bool \hyperlink{main__server_8cpp_a4f850f08d755a0d0ebe936b5b84975e3}{read\-Conf} (string $\ast$ip, int $\ast$port)
\begin{DoxyCompactList}\small\item\em Método de lectura de configuración. \end{DoxyCompactList}\item 
int \hyperlink{main__server_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4}{main} ()
\begin{DoxyCompactList}\small\item\em Método principal del servidor. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_server}{Server} $\ast$ \hyperlink{main__server_8cpp_ab6b71e6574fcb2d2e0a5c2af08a2799f}{serv}
\begin{DoxyCompactList}\small\item\em Instancia de la clase \hyperlink{class_server}{Server}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Descripción detallada}
Implementación del servidor. \begin{DoxyAuthor}{Autor}
Imanol Barba Sabariego 
\end{DoxyAuthor}
\begin{DoxyDate}{Fecha}
13/06/2013
\end{DoxyDate}
En este fichero se implementa un servidor T\-C\-P/\-I\-P usando las clases \hyperlink{class_socket}{Socket} y \hyperlink{class_server}{Server}. 

\subsection{Documentación de las funciones}
\hypertarget{main__server_8cpp_ab99831172d1d4bca2c79bb37c7c062df}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!kill\-Thread@{kill\-Thread}}
\index{kill\-Thread@{kill\-Thread}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{kill\-Thread}]{\setlength{\rightskip}{0pt plus 5cm}void kill\-Thread (
\begin{DoxyParamCaption}
\item[{{\bf thread\-\_\-args} $\ast$}]{t\-\_\-arg}
\end{DoxyParamCaption}
)}}\label{main__server_8cpp_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{main__server_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!main@{main}}
\index{main@{main}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{main}]{\setlength{\rightskip}{0pt plus 5cm}int main (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{main__server_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4}


Método principal del servidor. 

Lee la configuración usando \hyperlink{server_8h_a4f850f08d755a0d0ebe936b5b84975e3}{read\-Conf()} y incializa el servidor. \hypertarget{main__server_8cpp_aa6328bc358b87d3e11c3f460d6427c5b}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!process\-Text@{process\-Text}}
\index{process\-Text@{process\-Text}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{process\-Text}]{\setlength{\rightskip}{0pt plus 5cm}void process\-Text (
\begin{DoxyParamCaption}
\item[{string $\ast$}]{str}
\end{DoxyParamCaption}
)}}\label{main__server_8cpp_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{main__server_8cpp_a4f850f08d755a0d0ebe936b5b84975e3}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!read\-Conf@{read\-Conf}}
\index{read\-Conf@{read\-Conf}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{read\-Conf}]{\setlength{\rightskip}{0pt plus 5cm}bool read\-Conf (
\begin{DoxyParamCaption}
\item[{string $\ast$}]{ip, }
\item[{int $\ast$}]{port}
\end{DoxyParamCaption}
)}}\label{main__server_8cpp_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{main__server_8cpp_a5ee86dec2f1282750e7b1da928d45dbc}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!stop\-Server@{stop\-Server}}
\index{stop\-Server@{stop\-Server}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{stop\-Server}]{\setlength{\rightskip}{0pt plus 5cm}void stop\-Server (
\begin{DoxyParamCaption}
\item[{int}]{signal}
\end{DoxyParamCaption}
)}}\label{main__server_8cpp_a5ee86dec2f1282750e7b1da928d45dbc}


Método de detención del servidor. 

Este método detiene el servidor al recibir el signal S\-I\-G\-I\-N\-T del S\-O. 
\begin{DoxyParams}{Parámetros}
{\em signal} & Parámetro que captura el signal recibido \\
\hline
\end{DoxyParams}
\hypertarget{main__server_8cpp_a7d13c650ec7a525ad17cabba4f371745}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!Worker\-Thread@{Worker\-Thread}}
\index{Worker\-Thread@{Worker\-Thread}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{Worker\-Thread}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ Worker\-Thread (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{args}
\end{DoxyParamCaption}
)}}\label{main__server_8cpp_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}


\subsection{Documentación de las variables}
\hypertarget{main__server_8cpp_ab6b71e6574fcb2d2e0a5c2af08a2799f}{\index{main\-\_\-server.\-cpp@{main\-\_\-server.\-cpp}!serv@{serv}}
\index{serv@{serv}!main_server.cpp@{main\-\_\-server.\-cpp}}
\subsubsection[{serv}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Server}$\ast$ serv}}\label{main__server_8cpp_ab6b71e6574fcb2d2e0a5c2af08a2799f}


Instancia de la clase \hyperlink{class_server}{Server}. 

Esta variable contiene la instancia de la clase \hyperlink{class_server}{Server} que aquí se usa e inicializa.

{\itshape Se trata de una variable global para poder así usarla en las funciones que reciban signals del S\-O.} 