X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=tcpsockadv.tex;h=c93dc4ac08b11a16419313a89b1beb90abc53a79;hp=c8e9ec4ace77b08e43c309aaffb01e43d0136737;hb=bb7af0b0462a0f09ae13f617ef8f40c24e1857cf;hpb=d6c366b7f155596fb6cb3ed2dc631cc54e8b42e3 diff --git a/tcpsockadv.tex b/tcpsockadv.tex index c8e9ec4..c93dc4a 100644 --- a/tcpsockadv.tex +++ b/tcpsockadv.tex @@ -688,7 +688,7 @@ conseguente blocco del server su di una \func{write}. Le possibili soluzioni in questo caso sono quelle di ritornare ad eseguire il ciclo di risposta alle richieste all'interno di processi separati, utilizzare un timeout per le operazioni di scrittura, o eseguire queste ultime in -modalità non bloccante, cocludendo le operazioni qualora non vadano a buon +modalità non bloccante, concludendo le operazioni qualora non vadano a buon fine. @@ -700,8 +700,7 @@ Finora abbiamo trattato le problematiche risolubili con l'I/O multiplexing impiegando la funzione \func{select}; questo è quello che avviene nella maggior parte dei casi, in quanto essa è nata sotto BSD proprio per affrontare queste problematiche con i socket. Abbiamo però visto in -\secref{sec:file_multiplexing} come esistono altre funzioni che permettono di -affrontare lo stesso problema e come la funzione \func{poll} possa costituire +\secref{sec:file_multiplexing} come la funzione \func{poll} possa costituire una alternativa a \func{select}, con alcuni vantaggi.\footnote{non soffrendo delle limitazioni dovute all'uso dei \textit{file descriptor set}.} @@ -734,11 +733,25 @@ pertanto: Come esempio dell'uso di \func{poll} proviamo allora a reimplementare il server \textit{echo} secondo lo schema di \figref{fig:TCP_echo_multiplex} usando \func{poll} al posto di \func{select}. In questo caso dovremo fare -qualche modifica, - +qualche modifica, per tenere conto della diversa sintassi delle due funzioni, +ma la struttura del programma resta sostanzialmente la stessa. +\begin{figure}[!htbp] + \footnotesize \centering + \begin{minipage}[c]{15.6cm} + \includecodesample{listati/poll_echod.c} + \end{minipage} + \normalsize + \caption{La sezione principale del codice della nuova versione di server + \textit{echo} basati sull'uso della funzione \func{poll}.} + \label{fig:TCP_PollEchod} +\end{figure} +In \figref{fig:TCP_PollEchod} è riportata la sezione principale della nuova +versione del server, la versione completa del codice è riportata nel file +\file{poll\_echod.c} dei sorgenti allegati alla guida. Al solito si sono +tralasciate \section{Le opzioni dei socket}