Socket Unix - Riepilogo
Di seguito è riportato un elenco di tutte le funzioni relative alla programmazione dei socket.
Funzioni portuali e di servizio
Unix fornisce le seguenti funzioni per recuperare il nome del servizio dal file / etc / services.
struct servent *getservbyname(char *name, char *proto) - Questa chiamata prende un nome di servizio e un nome di protocollo e restituisce il numero di porta corrispondente per quel servizio.
struct servent *getservbyport(int port, char *proto) - Questa chiamata accetta un numero di porta e un nome di protocollo e restituisce il nome del servizio corrispondente.
Funzioni di ordinamento dei byte
unsigned short htons (unsigned short hostshort) - Questa funzione converte le quantità a 16 bit (2 byte) dall'ordine di byte dell'host all'ordine di byte di rete.
unsigned long htonl (unsigned long hostlong) - Questa funzione converte le quantità a 32 bit (4 byte) dall'ordine di byte dell'host all'ordine di byte di rete.
unsigned short ntohs (unsigned short netshort) - Questa funzione converte le quantità a 16 bit (2 byte) dall'ordine dei byte di rete all'ordine dei byte host.
unsigned long ntohl (unsigned long netlong) - Questa funzione converte le quantità a 32 bit dall'ordine dei byte di rete all'ordine dei byte host.
Funzioni di indirizzo IP
int inet_aton (const char *strptr, struct in_addr *addrptr)- Questa chiamata di funzione converte la stringa specificata, nella notazione punto standard Internet, in un indirizzo di rete e memorizza l'indirizzo nella struttura fornita. L'indirizzo convertito sarà in Network Byte Order (byte ordinati da sinistra a destra). Restituisce 1 se la stringa è valida e 0 in caso di errore.
in_addr_t inet_addr (const char *strptr)- Questa chiamata di funzione converte la stringa specificata, nella notazione punto standard Internet, in un valore intero adatto per essere utilizzato come indirizzo Internet. L'indirizzo convertito sarà in Network Byte Order (byte ordinati da sinistra a destra). Restituisce un byte di rete binario a 32 bit ordinato indirizzo IPv4 e INADDR_NONE in caso di errore.
char *inet_ntoa (struct in_addr inaddr) - Questa chiamata di funzione converte l'indirizzo host Internet specificato in una stringa nella notazione punto standard Internet.
Funzioni di base del socket
int socket (int family, int type, int protocol) - Questa chiamata restituisce un descrittore di socket che puoi usare nelle successive chiamate di sistema o ti dà -1 in caso di errore.
int connect (int sockfd, struct sockaddr *serv_addr, int addrlen)- La funzione di connessione viene utilizzata da un client TCP per stabilire una connessione con un server TCP. Questa chiamata restituisce 0 se si connette correttamente al server, altrimenti restituisce -1.
int bind(int sockfd, struct sockaddr *my_addr,int addrlen)- La funzione bind assegna un indirizzo di protocollo locale a un socket. Questa chiamata restituisce 0 se si associa con successo all'indirizzo, altrimenti restituisce -1.
int listen(int sockfd, int backlog)- La funzione di ascolto viene chiamata solo da un server TCP per ascoltare la richiesta del client. Questa chiamata restituisce 0 in caso di successo, altrimenti restituisce -1.
int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)- La funzione di accettazione viene chiamata da un server TCP per accettare le richieste dei client e per stabilire una connessione effettiva. Questa chiamata restituisce un descrittore non negativo in caso di successo, altrimenti restituisce -1.
int send(int sockfd, const void *msg, int len, int flags)- La funzione di invio viene utilizzata per inviare dati tramite stream socket o socket datagram CONNECTED. Questa chiamata restituisce il numero di byte inviati, altrimenti restituisce -1.
int recv (int sockfd, void *buf, int len, unsigned int flags)- La funzione recv viene utilizzata per ricevere dati su stream socket o socket datagram CONNECTED. Questa chiamata restituisce il numero di byte letti nel buffer, altrimenti restituisce -1 in caso di errore.
int sendto (int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)- La funzione sendto viene utilizzata per inviare dati su socket datagrammi NON CONNESSI. Questa chiamata restituisce il numero di byte inviati, altrimenti restituisce -1 in caso di errore.
int recvfrom (int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen)- La funzione recvfrom viene utilizzata per ricevere dati da socket di datagramma UNCONNECTED. Questa chiamata restituisce il numero di byte letti nel buffer, altrimenti restituisce -1 in caso di errore.
int close (int sockfd)- La funzione di chiusura viene utilizzata per chiudere una comunicazione tra il client e il server. Questa chiamata restituisce 0 in caso di successo, altrimenti restituisce -1.
int shutdown (int sockfd, int how)- La funzione di arresto viene utilizzata per chiudere correttamente una comunicazione tra il client e il server. Questa funzione offre un maggiore controllo rispetto alla funzione di chiusura. Restituisce 0 in caso di successo, -1 in caso contrario.
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) - Questa funzione viene utilizzata per leggere o scrivere più socket.
Funzioni di supporto del socket
int write (int fildes, const void *buf, int nbyte)- La funzione write tenta di scrivere nbyte byte dal buffer puntato da buf nel file associato al descrittore di file aperto, fildes. Dopo il completamento con successo, write () restituisce il numero di byte effettivamente scritti nel file associato ai file. Questo numero non è mai maggiore di nbyte. In caso contrario, viene restituito -1.
int read (int fildes, const void *buf, int nbyte)- La funzione read tenta di leggere nbyte byte dal file associato al descrittore di file aperto, fildes, nel buffer puntato da buf. Dopo il completamento con successo, write () restituisce il numero di byte effettivamente scritti nel file associato ai file. Questo numero non è mai maggiore di nbyte. In caso contrario, viene restituito -1.
int fork (void)- La funzione fork crea un nuovo processo. Il nuovo processo, chiamato processo figlio, sarà una copia esatta del processo chiamante (processo genitore).
void bzero (void *s, int nbyte)- La funzione bzero inserisce nbyte byte nulli nella stringa s. Questa funzione verrà utilizzata per impostare tutte le strutture socket con valori nulli.
int bcmp (const void *s1, const void *s2, int nbyte)- La funzione bcmp confronta la stringa di byte s1 con la stringa di byte s2. Si presume che entrambe le stringhe siano lunghe nbyte byte.
void bcopy (const void *s1, void *s2, int nbyte)- La funzione bcopy copia nbyte byte dalla stringa s1 alla stringa s2. Le stringhe sovrapposte vengono gestite correttamente.
void *memset(void *s, int c, int nbyte) - La funzione memset viene utilizzata anche per impostare le variabili di struttura allo stesso modo di bzero.