X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=elemtcp.tex;h=c77370107666b73540e30cd2c69737eddf6c82e6;hp=e31736ff6798a7c824528e69bfb94ac18489a54a;hb=718a0a24b34dce09e40eafc33c02ae494d100181;hpb=2e096eb5d1df57ce4b887630bdc81526c455b45b diff --git a/elemtcp.tex b/elemtcp.tex index e31736f..c773701 100644 --- a/elemtcp.tex +++ b/elemtcp.tex @@ -658,7 +658,7 @@ ci si porr \item[\errcode{EBADF}] il file descriptor non è valido. \item[\errcode{EINVAL}] il socket ha già un indirizzo assegnato. \item[\errcode{ENOTSOCK}] il file descriptor non è associato ad un socket. - \item[\errcode{EACCESS}] si è cercato di usare una porta riservata senza + \item[\errcode{EACCES}] si è cercato di usare una porta riservata senza sufficienti privilegi. \end{errlist}} \end{prototype} @@ -773,9 +773,9 @@ connessione con un server TCP, il prototipo della funzione \item[\errcode{EAGAIN}] non ci sono più porte locali libere. \item[\errcode{EAFNOSUPPORT}] l'indirizzo non ha una famiglia di indirizzi corretta nel relativo campo. - \item[\errcode{EACCESS, EPERM}] si è tentato di eseguire una connessione ad - un indirizzo broadcast senza che il socket fosse stato abilitato per il - broadcast. + \item[\errcode{EACCES}, \errcode{EPERM}] si è tentato di eseguire una + connessione ad un indirizzo broadcast senza che il socket fosse stato + abilitato per il broadcast. \end{errlist} altri errori possibili sono: \errval{EFAULT}, \errval{EBADF}, \errval{ENOTSOCK}, \errval{EISCONN} e \errval{EADDRINUSE}.} @@ -972,13 +972,9 @@ effettuare la comunicazione. Se non ci sono connessioni completate il processo viene messo in attesa. Il prototipo della funzione è il seguente: \begin{prototype}{sys/socket.h} {int accept(int sockfd, struct sockaddr *addr, socklen\_t *addrlen)} - Estrae la prima connessione relativa al socket \var{sockfd} - in attesa sulla coda delle connessioni complete, che associa ad nuovo socket - con le stesse caratteristiche di \var{sockfd} (restituito dalla funzione - stessa). Il socket originale non viene toccato. Nella struttura - \var{addr} e nella variabile \var{addrlen} vengono restituiti - indirizzo e relativa lunghezza del client che si è connesso. + Accetta una connessione sul socket specificato. + \bodydesc{La funzione restituisce un numero di socket descriptor positivo in caso di successo e -1 in caso di errore, nel qual caso la variabile \var{errno} viene impostata ai seguenti valori: @@ -993,9 +989,9 @@ viene messo in attesa. Il prototipo della funzione come non bloccante (vedi \secref{sec:file_noblocking}), e non ci sono connessioni in attesa di essere accettate. \item[\errcode{EPERM}] Le regole del firewall non consentono la connessione. - \item[\errcode{ENOBUFS, ENOMEM}] questo spesso significa che l'allocazione - della memoria è limitata dai limiti sui buffer dei socket, non dalla - memoria di sistema. + \item[\errcode{ENOBUFS}, \errcode{ENOMEM}] questo spesso significa che + l'allocazione della memoria è limitata dai limiti sui buffer dei socket, + non dalla memoria di sistema. \end{errlist} Inoltre possono essere restituiti gli errori di rete relativi al nuovo socket come: \errval{EMFILE}, \errval{EINVAL}, \errval{ENOSR}, @@ -1004,6 +1000,13 @@ viene messo in attesa. Il prototipo della funzione \errval{ERESTARTSYS}.} \end{prototype} +Estrae la prima connessione relativa al socket \var{sockfd} in attesa sulla +coda delle connessioni complete, che associa ad nuovo socket con le stesse +caratteristiche di \var{sockfd} (restituito dalla funzione stessa). Il socket +originale non viene toccato. Nella struttura \var{addr} e nella variabile +\var{addrlen} vengono restituiti indirizzo e relativa lunghezza del client che +si è connesso. + La funzione può essere usata solo con socket che supportino la connessione (cioè di tipo \const{SOCK\_STREAM}, \const{SOCK\_SEQPACKET} o \const{SOCK\_RDM}). Per alcuni protocolli che richiedono una conferma