\item \texttt{SOCK\_STREAM} Provvede un canale di trasmissione dati
bidirezionale, sequenziale e affidabile. Opera su una connessione con un
altro socket. I dati vengono ricevuti e trasmessi come un flusso continuo di
- byte (da cui il nome \textit{stream}). Vedi \ref{sec:sock_stream}.
+ byte (da cui il nome \textit{stream}).
\item \texttt{SOCK\_DGRAM} Viene usato per mandare pacchetti di lunghezza
massima fissata (\textit{datagram}) indirizzati singolarmente, senza
- connessione e in maniera non affidabile. È l'opposto del precedente. Vedi
- \ref{sec:sock_dgram}.
+ connessione e in maniera non affidabile. È l'opposto del precedente.
\item \texttt{SOCK\_SEQPACKET} Provvede un canale di trasmissione di dati
bidirezionale, sequenziale e affidabile. Opera su una connessione con un
altro socket. I dati possono solo essere trasmessi e letti per pacchetti (di
};
\end{lstlisting}
\caption{La struttura generica degli indirizzi dei socket \texttt{sockaddr}}
- \label{fig:sock_sa_struct}
+ \label{fig:sock_sa_gen_struct}
\end{figure}
Tutte le funzioni dei socket che usano gli indirizzi sono definite usando nel
\end{lstlisting}
\caption{La struttura degli indirizzi dei socket internet (IPv4)
\texttt{sockaddr\_in}.}
- \label{fig:sock_sa_struct}
+ \label{fig:sock_sa_ipv4_struct}
\end{figure}
L'indirizzo di un socket internet (secondo IPv4) comprende l'indirizzo
\end{lstlisting}
\caption{La struttura degli indirizzi dei socket IPv6
\texttt{sockaddr\_in6}.}
- \label{fig:sock_sa_struct}
+ \label{fig:sock_sa_ipv6_struct}
\end{figure}
Il campo \texttt{sin6\_family} deve essere sempre settato ad
\end{lstlisting}
\caption{La struttura degli indirizzi dei socket locali
\texttt{sockaddr\_un}.}
- \label{fig:sock_sa_struct}
+ \label{fig:sock_sa_local_struct}
\end{figure}
In questo caso il campo \texttt{sun\_family} deve essere \texttt{AF\_UNIX},
arrivati alla fine del file e pertanto si ritorna senza aver concluso la
lettura di tutti i bytes richiesti.
-
-
-\chapter{Socket TCP elementari}
-\label{cha:elem_TCP_sock}
-
-In questo capitolo esamineremo i vari dettagli necessari per capire il
-funzionamento dei socket TCP, partendo dai due esempi elementari visti in
-precedenza (vedi \ref{sec:net_cli_sample} e \ref{sec:net_cli_server}), per
-arrivare a scrivere una semplice applicazione client/server completa
-(l'implementazione del servizio \texttt{time} su TCP).
-
-Tratteremo qui dunque il funzionamento delle varie funzioni che si sono usate
-nell'esempio precedente e daremo una descrizione delle principali
-caratteristiche del funzionamento di una connessione TCP.
-
-\section{Il funzionamento di una connessione TCP}
-\label{sec:TCPel_connession}
-
-Prima di entrare nei dettagli del funzionamento delle funzioni della
-interfaccia dei socket che operano con TCP (\texttt{connect}, \texttt{accept},
-\texttt{close}) è fondamentale capire alcune basi del funzionamento di una
-connessione TCP, in particolare su come la si stabilisce e come la si
-conclude e sul diagramma degli stati del TCP.
-
-\subsection{Creazione: il \textit{three way handshake}}
-\label{sec:TCPel_conn_cre}
-
-\subsection{Il significato delle opzioni del TCP}
-\label{sec:TCPel_TCP_opt}
-
-\subsection{La terminazione della connessione}
-\label{sec:TCPel_conn_term}
-
-\subsection{Il diagramma delle transizioni di stato}
-\label{sec:TCPel_trans_dia}
-
-\subsection{Lo stato \texttt{TIME\_WAIT}}
-\label{sec:TCPel_time_wait}
-
-
-\section{I numeri di porta}
-\label{sec:TCPel_ports}
-
-\section{Le funzioni dei socket TCP}
-\label{sec:TCPel_functions}
-
-\subsection{La funzione \texttt{connect}}
-\label{sec:TCPel_func_connect}
-
-\subsection{La funzione \texttt{bind}}
-\label{sec:TCPel_func_bind}
-
-\subsection{La funzione \texttt{listen}}
-\label{sec:TCPel_func_listen}
-
-\subsection{La funzione \texttt{connect}}
-\label{sec:TCPel_func_connect}
-
-\subsection{La funzione \texttt{accept}}
-\label{sec:TCPel_func_accept}
-
-
-\subsection{Le porte}
-
-
-