\hypertarget{class_socket}{\section{Referencia de la Clase Socket} \label{class_socket}\index{Socket@{Socket}} } Clase del socket. {\ttfamily \#include $<$Socket.\-h$>$} \subsection*{Métodos públicos} \begin{DoxyCompactItemize} \item \hyperlink{class_socket_a7c3256c4fc6e2c603df73201049fae5a}{Socket} () \begin{DoxyCompactList}\small\item\em Constructor de la clase \hyperlink{class_socket}{Socket}. \end{DoxyCompactList}\item void \hyperlink{class_socket_add736ccf41f102910a2b8ac5e77eb8b1}{Create} () \begin{DoxyCompactList}\small\item\em Método para crear sockets. \end{DoxyCompactList}\item void \hyperlink{class_socket_afdc52c70cf11911cc1a3c595a7849cf0}{Bind} (string address, int port) \begin{DoxyCompactList}\small\item\em Método para hacer bind a una dirección y puerto. \end{DoxyCompactList}\item void \hyperlink{class_socket_a4d476d11854d7acb17b8d196c8171865}{Listen} (int backlog) \begin{DoxyCompactList}\small\item\em Método para escuchar conexiones. \end{DoxyCompactList}\item void \hyperlink{class_socket_a25cdd79546b8e7e49f2195208ae6d00c}{Accept} (\hyperlink{class_socket}{Socket} \&client\-Sock) \begin{DoxyCompactList}\small\item\em Método para aceptar conexiones. \end{DoxyCompactList}\item void \hyperlink{class_socket_aa1d074c1aa400e8bca7c7da79b036abe}{Connect} (string hostname, int port) \begin{DoxyCompactList}\small\item\em Método para efectuar conexiones. \end{DoxyCompactList}\item void \hyperlink{class_socket_a4c8ced9a8ce58834191b3b4f2033b173}{Close} () \begin{DoxyCompactList}\small\item\em Método para cerrar sockets. \end{DoxyCompactList}\item int \hyperlink{class_socket_abc14da0faa1d00fe361eeede1b3cda4a}{get\-Sock} () \begin{DoxyCompactList}\small\item\em Getter para el file descriptor del socket. \end{DoxyCompactList}\item const \hyperlink{class_socket}{Socket} \& \hyperlink{class_socket_a5beab0c84c933510a53126f786cff6de}{operator$<$$<$} (const string \&) \begin{DoxyCompactList}\small\item\em Método para enviar mensajes. \end{DoxyCompactList}\item const \hyperlink{class_socket}{Socket} \& \hyperlink{class_socket_ab6b2dffea36c60c53f8d5e539f1cf000}{operator$>$$>$} (string \&) \begin{DoxyCompactList}\small\item\em Método para recibir mensajes. \end{DoxyCompactList}\end{DoxyCompactItemize} \subsection*{Métodos privados} \begin{DoxyCompactItemize} \item int \hyperlink{class_socket_aa1a8b143bb2adf57934156d9e33b8611}{Receive} (char $\ast$buff, int length) \begin{DoxyCompactList}\small\item\em Método para recibir un mensaje de longitud conocida. \end{DoxyCompactList}\item int \hyperlink{class_socket_a4c4ecb88d5587177899198861d29d3dd}{Send} (const char $\ast$buff, int length) \begin{DoxyCompactList}\small\item\em Método para enviar un mensaje de longitud conocida. \end{DoxyCompactList}\end{DoxyCompactItemize} \subsection*{Atributos privados} \begin{DoxyCompactItemize} \item int \hyperlink{class_socket_a231ddf6e338a86640e26808b83efeaa1}{sock} \begin{DoxyCompactList}\small\item\em Descriptor del fichero del socket. \end{DoxyCompactList}\item struct sockaddr\-\_\-in \hyperlink{class_socket_ae4d80b83c327ed835b5f4575a499a400}{sock\-Addr} \begin{DoxyCompactList}\small\item\em Estructura de dirección de socket. \end{DoxyCompactList}\end{DoxyCompactItemize} \subsection{Descripción detallada} Clase del socket. Esta clase define un objeto con los métodos y atributos necesarios para realizar comunicación encriptada o en texto llano a través de un socket T\-C\-P/\-I\-P en un entorno U\-N\-I\-X abstrayendo la implementación de sockets y de encriptación al programador. \subsection{Documentación del constructor y destructor} \hypertarget{class_socket_a7c3256c4fc6e2c603df73201049fae5a}{\index{Socket@{Socket}!Socket@{Socket}} \index{Socket@{Socket}!Socket@{Socket}} \subsubsection[{Socket}]{\setlength{\rightskip}{0pt plus 5cm}Socket\-::\-Socket ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{class_socket_a7c3256c4fc6e2c603df73201049fae5a} Constructor de la clase \hyperlink{class_socket}{Socket}. Inicializa el file descriptor del socket y prepara la memoria donde se almacenarán las llaves públicas. \subsection{Documentación de las funciones miembro} \hypertarget{class_socket_a25cdd79546b8e7e49f2195208ae6d00c}{\index{Socket@{Socket}!Accept@{Accept}} \index{Accept@{Accept}!Socket@{Socket}} \subsubsection[{Accept}]{\setlength{\rightskip}{0pt plus 5cm}void Socket\-::\-Accept ( \begin{DoxyParamCaption} \item[{{\bf Socket} \&}]{client\-Sock} \end{DoxyParamCaption} )}}\label{class_socket_a25cdd79546b8e7e49f2195208ae6d00c} Método para aceptar conexiones. \begin{DoxyVerb}Este método bloquea el thread que lo ejecuta hasta que recibe una conexión entrante, que almacena como instancia de la clase \end{DoxyVerb} \hyperlink{class_socket}{Socket} en la referencia proporcionada por argumento. \begin{DoxyParams}{Parámetros} {\em client\-Sock} & Instáncia de \hyperlink{class_socket}{Socket} que comunica con el cliente entrante \\ \hline \end{DoxyParams} \hypertarget{class_socket_afdc52c70cf11911cc1a3c595a7849cf0}{\index{Socket@{Socket}!Bind@{Bind}} \index{Bind@{Bind}!Socket@{Socket}} \subsubsection[{Bind}]{\setlength{\rightskip}{0pt plus 5cm}void Socket\-::\-Bind ( \begin{DoxyParamCaption} \item[{string}]{address, } \item[{int}]{port} \end{DoxyParamCaption} )}}\label{class_socket_afdc52c70cf11911cc1a3c595a7849cf0} Método para hacer bind a una dirección y puerto. \begin{DoxyVerb}Este método asigna el socket a una dirección IP (y por tanto, a una interfaz de red en concreto) y un puerto, para que \end{DoxyVerb} posteriormente actúe de servidor escuchando conexiones. \begin{DoxyParams}{Parámetros} {\em address} & Dirección I\-P asignada \\ \hline {\em port} & Puerto asignado \\ \hline \end{DoxyParams} \hypertarget{class_socket_a4c8ced9a8ce58834191b3b4f2033b173}{\index{Socket@{Socket}!Close@{Close}} \index{Close@{Close}!Socket@{Socket}} \subsubsection[{Close}]{\setlength{\rightskip}{0pt plus 5cm}void Socket\-::\-Close ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{class_socket_a4c8ced9a8ce58834191b3b4f2033b173} Método para cerrar sockets. Este método cierra el socket para que no se pueda escribir ni leer más en él, para liberarlo del kernel y terminar la conexión T\-C\-P. \hypertarget{class_socket_aa1d074c1aa400e8bca7c7da79b036abe}{\index{Socket@{Socket}!Connect@{Connect}} \index{Connect@{Connect}!Socket@{Socket}} \subsubsection[{Connect}]{\setlength{\rightskip}{0pt plus 5cm}void Socket\-::\-Connect ( \begin{DoxyParamCaption} \item[{string}]{hostname, } \item[{int}]{port} \end{DoxyParamCaption} )}}\label{class_socket_aa1d074c1aa400e8bca7c7da79b036abe} Método para efectuar conexiones. \begin{DoxyVerb}Este método sirve a los sockets que actúan como cliente para poder efectuar conexiones a otro socket que esté escuchando en la \end{DoxyVerb} dirección y puerto especificados y atienda conexiones. \begin{DoxyParams}{Parámetros} {\em hostname} & Hostname al que conectarse \\ \hline {\em port} & Puerto al que conectarse \\ \hline \end{DoxyParams} \hypertarget{class_socket_add736ccf41f102910a2b8ac5e77eb8b1}{\index{Socket@{Socket}!Create@{Create}} \index{Create@{Create}!Socket@{Socket}} \subsubsection[{Create}]{\setlength{\rightskip}{0pt plus 5cm}void Socket\-::\-Create ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{class_socket_add736ccf41f102910a2b8ac5e77eb8b1} Método para crear sockets. Crea un file descriptor para un socket que por defecto no está conectado ni asignado a ninguna dirección. \hypertarget{class_socket_abc14da0faa1d00fe361eeede1b3cda4a}{\index{Socket@{Socket}!get\-Sock@{get\-Sock}} \index{get\-Sock@{get\-Sock}!Socket@{Socket}} \subsubsection[{get\-Sock}]{\setlength{\rightskip}{0pt plus 5cm}int Socket\-::get\-Sock ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )}}\label{class_socket_abc14da0faa1d00fe361eeede1b3cda4a} Getter para el file descriptor del socket. Este método devuelve el file descriptor del socket. \hypertarget{class_socket_a4d476d11854d7acb17b8d196c8171865}{\index{Socket@{Socket}!Listen@{Listen}} \index{Listen@{Listen}!Socket@{Socket}} \subsubsection[{Listen}]{\setlength{\rightskip}{0pt plus 5cm}void Socket\-::\-Listen ( \begin{DoxyParamCaption} \item[{int}]{backlog} \end{DoxyParamCaption} )}}\label{class_socket_a4d476d11854d7acb17b8d196c8171865} Método para escuchar conexiones. Este método configura el socket para que se ponga en modo escucha y así pueda atender conexiones entrantes. \begin{DoxyParams}{Parámetros} {\em backlog} & Número máximo de conexiones {\bfseries en espera} \\ \hline \end{DoxyParams} \hypertarget{class_socket_a5beab0c84c933510a53126f786cff6de}{\index{Socket@{Socket}!operator$<$$<$@{operator$<$$<$}} \index{operator$<$$<$@{operator$<$$<$}!Socket@{Socket}} \subsubsection[{operator$<$$<$}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Socket} \& Socket\-::operator$<$$<$ ( \begin{DoxyParamCaption} \item[{const string \&}]{text} \end{DoxyParamCaption} )}}\label{class_socket_a5beab0c84c933510a53126f786cff6de} Método para enviar mensajes. \begin{DoxyVerb}Este método envía el mensaje que se le proporciona a través del Socket con o sin encriptación según \end{DoxyVerb} las \hyperlink{howto_defines}{opciones de compilación} usando el \hyperlink{howto_proto}{protocolo} implementado. \begin{DoxyParams}{Parámetros} {\em text} & Mensaje a enviar \\ \hline \end{DoxyParams} \hypertarget{class_socket_ab6b2dffea36c60c53f8d5e539f1cf000}{\index{Socket@{Socket}!operator$>$$>$@{operator$>$$>$}} \index{operator$>$$>$@{operator$>$$>$}!Socket@{Socket}} \subsubsection[{operator$>$$>$}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Socket} \& Socket\-::operator$>$$>$ ( \begin{DoxyParamCaption} \item[{std\-::string \&}]{text} \end{DoxyParamCaption} )}}\label{class_socket_ab6b2dffea36c60c53f8d5e539f1cf000} Método para recibir mensajes. \begin{DoxyVerb}Este método recibe un mensaje de longitud arbitrária con o sin encriptación según las \ref defines "opciones de compilación" usando \end{DoxyVerb} el \hyperlink{howto_proto}{protocolo} implementado. \begin{DoxyParams}{Parámetros} {\em text} & Mensaje a recibir \\ \hline \end{DoxyParams} \hypertarget{class_socket_aa1a8b143bb2adf57934156d9e33b8611}{\index{Socket@{Socket}!Receive@{Receive}} \index{Receive@{Receive}!Socket@{Socket}} \subsubsection[{Receive}]{\setlength{\rightskip}{0pt plus 5cm}int Socket\-::\-Receive ( \begin{DoxyParamCaption} \item[{char $\ast$}]{buff, } \item[{int}]{length} \end{DoxyParamCaption} )\hspace{0.3cm}{\ttfamily [private]}}}\label{class_socket_aa1a8b143bb2adf57934156d9e33b8611} Método para recibir un mensaje de longitud conocida. Este método se usa para recibir un mensaje de la longitud que se especifica por argumento y almacenarlo en el buffer proporcionado. {\itshape Este método garantiza que todo el mensaje se recibirá entero aunque la red no admita una longitud de paquete tan grande.} \begin{DoxyParams}{Parámetros} {\em buff} & Buffer donde se almacena el mensaje recibido \\ \hline {\em length} & Longitud del mensaje a recibir \\ \hline \end{DoxyParams} \hypertarget{class_socket_a4c4ecb88d5587177899198861d29d3dd}{\index{Socket@{Socket}!Send@{Send}} \index{Send@{Send}!Socket@{Socket}} \subsubsection[{Send}]{\setlength{\rightskip}{0pt plus 5cm}int Socket\-::\-Send ( \begin{DoxyParamCaption} \item[{const char $\ast$}]{buff, } \item[{int}]{length} \end{DoxyParamCaption} )\hspace{0.3cm}{\ttfamily [private]}}}\label{class_socket_a4c4ecb88d5587177899198861d29d3dd} Método para enviar un mensaje de longitud conocida. Este método se usa para enviar un mensaje de la longitud especifidada en el argumento y devuelve el número de bytes enviados. {\itshape Este método garantiza que todo el mensaje se enviará entero aunque la red no admita una longitud de paquete tan grande.} \begin{DoxyParams}{Parámetros} {\em buff} & Buffer con el mensaje a enviar \\ \hline {\em length} & Longitud del mensaje \\ \hline \end{DoxyParams} \subsection{Documentación de los datos miembro} \hypertarget{class_socket_a231ddf6e338a86640e26808b83efeaa1}{\index{Socket@{Socket}!sock@{sock}} \index{sock@{sock}!Socket@{Socket}} \subsubsection[{sock}]{\setlength{\rightskip}{0pt plus 5cm}int Socket\-::sock\hspace{0.3cm}{\ttfamily [private]}}}\label{class_socket_a231ddf6e338a86640e26808b83efeaa1} Descriptor del fichero del socket. Esta variable contiene el file descriptor del socket abierto por el S\-O. \hypertarget{class_socket_ae4d80b83c327ed835b5f4575a499a400}{\index{Socket@{Socket}!sock\-Addr@{sock\-Addr}} \index{sock\-Addr@{sock\-Addr}!Socket@{Socket}} \subsubsection[{sock\-Addr}]{\setlength{\rightskip}{0pt plus 5cm}struct sockaddr\-\_\-in Socket\-::sock\-Addr\hspace{0.3cm}{\ttfamily [private]}}}\label{class_socket_ae4d80b83c327ed835b5f4575a499a400} Estructura de dirección de socket. Este struct es usado por el S\-O para gestionar la dirección del socket abierto. La documentación para esta clase fue generada a partir de los siguientes ficheros\-:\begin{DoxyCompactItemize} \item /home/imanol/devel/eclipse/\-P\-A\-D/\-J\-Chat\-Client/src/include/\hyperlink{_socket_8h}{Socket.\-h}\item /home/imanol/devel/eclipse/\-P\-A\-D/\-J\-Chat\-Client/src/\hyperlink{_socket_8cpp}{Socket.\-cpp}\end{DoxyCompactItemize}