seguendo la convenzione usata nelle pagine di manuale.
I domini (e i relativi nomi simbolici), così come i nomi delle famiglie di
-indirizzi, sono definiti dall'\textit{header file} \headfile{socket.h}. Un
+indirizzi, sono definiti dall'\textit{header file} \headfiled{socket.h}. Un
elenco delle famiglie di protocolli disponibili in Linux è riportato in
tab.~\ref{tab:net_pf_names}. L'elenco indica tutti i protocolli definiti; fra
questi però saranno utilizzabili solo quelli per i quali si è compilato il
tre tipi, Linux supporta anche gli altri, come si può verificare nel file
\texttt{include/linux/net.h} dei sorgenti del kernel.}
-\begin{basedescript}{\desclabelwidth{2.9cm}\desclabelstyle{\nextlinelabel}}
+\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
\item[\const{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
devono usarlo, è riservato all'uso di sistema.
\item[\const{SOCK\_RDM}] Provvede un canale di trasmissione di dati
affidabile, ma in cui non è garantito l'ordine di arrivo dei pacchetti.
-\item[\const{SOCK\_PACKET}] Obsoleto, non deve essere più usato.\footnote{e
- pertanto non ne parleremo ulteriormente.}
+\item[\const{SOCK\_PACKET}] Obsoleto, non deve essere più usato (e pertanto
+ non ne parleremo ulteriormente).
\end{basedescript}
A partire dal kernel 2.6.27 l'argomento \param{type} della funzione
non strettamente attinenti all'indicazione del tipo secondo i valori appena
illustrati. Essi infatti possono essere combinati con un OR aritmetico delle
ulteriori costanti:
-\begin{basedescript}{\desclabelwidth{2.9cm}\desclabelstyle{\nextlinelabel}}
+\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}}
\item[\const{SOCK\_CLOEXEC}] imposta il flag di \textit{close-on-exec} sul
file descriptor del socket, ottenendo lo stesso effetto del flag
\const{O\_CLOEXEC} di \func{open} (vedi tab.~\ref{tab:open_operation_flag}),
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.80\textwidth}
\includestruct{listati/sockaddr.h}
\end{minipage}
\caption{La struttura generica degli indirizzi dei socket
\multicolumn{1}{|c|}{\textbf{Header}} \\
\hline
\hline
- \type{int8\_t} & intero a 8 bit con segno & \headfile{sys/types.h}\\
- \type{uint8\_t} & intero a 8 bit senza segno & \headfile{sys/types.h}\\
- \type{int16\_t} & intero a 16 bit con segno & \headfile{sys/types.h}\\
- \type{uint16\_t} & intero a 16 bit senza segno& \headfile{sys/types.h}\\
- \type{int32\_t} & intero a 32 bit con segno & \headfile{sys/types.h}\\
- \type{uint32\_t} & intero a 32 bit senza segno& \headfile{sys/types.h}\\
+ \typed{int8\_t} & intero a 8 bit con segno & \headfile{sys/types.h}\\
+ \typed{uint8\_t} & intero a 8 bit senza segno & \headfile{sys/types.h}\\
+ \typed{int16\_t} & intero a 16 bit con segno & \headfile{sys/types.h}\\
+ \typed{uint16\_t} & intero a 16 bit senza segno& \headfile{sys/types.h}\\
+ \typed{int32\_t} & intero a 32 bit con segno & \headfile{sys/types.h}\\
+ \typed{uint32\_t} & intero a 32 bit senza segno& \headfile{sys/types.h}\\
\hline
- \type{sa\_family\_t} & famiglia degli indirizzi&\headfile{sys/socket.h}\\
- \type{socklen\_t} & lunghezza (\type{uint32\_t}) dell'indirizzo di
+ \typed{sa\_family\_t} & famiglia degli indirizzi&\headfile{sys/socket.h}\\
+ \typed{socklen\_t} & lunghezza (\type{uint32\_t}) dell'indirizzo di
un socket& \headfile{sys/socket.h}\\
\hline
- \type{in\_addr\_t} & indirizzo IPv4 (\type{uint32\_t}) &
+ \typed{in\_addr\_t} & indirizzo IPv4 (\type{uint32\_t}) &
\headfile{netinet/in.h}\\
- \type{in\_port\_t} & porta TCP o UDP (\type{uint16\_t})&
+ \typed{in\_port\_t} & porta TCP o UDP (\type{uint16\_t})&
\headfile{netinet/in.h}\\
\hline
\end{tabular}
I socket di tipo \const{PF\_INET} vengono usati per la comunicazione
attraverso internet; la struttura per gli indirizzi per un socket internet (se
si usa IPv4) è definita come \struct{sockaddr\_in} nell'header file
-\headfile{netinet/in.h} ed ha la forma mostrata in
+\headfiled{netinet/in.h} ed ha la forma mostrata in
fig.~\ref{fig:sock_sa_ipv4_struct}, conforme allo standard POSIX.1g.
\begin{figure}[!htb]
\footnotesize\centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.80\textwidth}
\includestruct{listati/sockaddr_in.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_in} degli indirizzi dei socket
Il membro \var{sin\_addr} contiene un indirizzo internet, e viene acceduto sia
come struttura (un resto di una implementazione precedente in cui questa era
-una \direct{union} usata per accedere alle diverse classi di indirizzi) che
+una \dirct{union} usata per accedere alle diverse classi di indirizzi) che
direttamente come intero. In \headfile{netinet/in.h} vengono definite anche
alcune costanti che identificano alcuni indirizzi speciali, riportati in
tab.~\ref{tab:TCP_ipv4_addr}, che rincontreremo più avanti.
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.80\textwidth}
\includestruct{listati/sockaddr_in6.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_in6} degli indirizzi dei socket
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.80\textwidth}
\includestruct{listati/sockaddr_un.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_un} degli indirizzi dei socket
locali (detti anche \textit{unix domain}) definita in
- \headfile{sys/un.h}.}
+ \headfiled{sys/un.h}.}
\label{fig:sock_sa_local_struct}
\end{figure}
Gli indirizzi AppleTalk devono essere specificati tramite una struttura
\struct{sockaddr\_atalk}, la cui definizione è riportata in
fig.~\ref{fig:sock_sa_atalk_struct}; la struttura viene dichiarata includendo
-il file \headfile{netatalk/at.h}.
+il file \headfiled{netatalk/at.h}.
\begin{figure}[!htb]
\footnotesize \centering
- \begin{minipage}[c]{\textwidth}
+ \begin{minipage}[c]{0.80\textwidth}
\includestruct{listati/sockaddr_atalk.h}
\end{minipage}
\caption{La struttura \structd{sockaddr\_atalk} degli indirizzi dei socket