zion - bind
Nom
bind - Fournir un nom à une socket.
Résumé
#include <sys/types.h> #include <sys/socket.h> int bind(int sockfd , struct sockaddr * my_addr , socklen_t addrlen );
Description
bind fournit à la socket sockfd , l'adresse locale my_addr . my_addr est longue de addrlen octets. Traditionnellement cette opération est appelée "affectation d'un nom à une socket" (Quand une socket est créée, par l'appel-système socket (2), elle existe dans l'espace des noms mais n'a pas de nom assigné).
Il est normalement nécessaire d'affecter une adresse locale avec bind avant qu'une socket SOCK_STREAM puisse recevoir des connexions (voir accept (2)). Les règles d'affectation de nom varient suivant le domaine de communication. Consultez le manuel Linux section 7 pour de plus amples informations. Pour AF_INET voir ip (7), pour AF_UNIX voir unix (7), pour AF_APPLETALK voir ddp (7), pour AF_PACKET voir packet (7), pour AF_X25 voir x25 (7) et pour AF_NETLINK voir netlink (7).
Valeur renvoyée
L'appel renvoie 0 s'il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.
Erreurs
EBADF sockfd
n'est pas un descripteur valide. |
EINVAL
La socket possède déjà une adresse. Ceci peut changer dans l'avenir : voir linux/unix/sock.c pour les détails. |
EACCES
L'adresse est protégée et l'utilisateur n'est pas le Super-User. |
ENOTSOCK
L'argument est un descripteur de fichier, pas une socket. |
Les erreurs suivantes sont spécifiques aux sockets du domaine UNIX ( AF_UNIX ) :
EINVAL
La longueur addr_len est fausse, ou la socket n'est pas de la famille AF_UNIX. |
EROFS
L'i-noeud se trouverait dans un système de fichiers en lecture seule. |
EFAULT my_addr
pointe en dehors de l'espace d'adresse accessible. |
ENAMETOOLONG my_addr
est trop long |
ENOENT
Le fichier n'existe pas. |
ENOMEM
pas assez de mémoire pour le noyau. |
ENOTDIR
Un composant du chemin d'accès n'est pas un répertoire. |
EACCES
L'accès à un composant du chemin d'accès n'est pas autorisé. |
ELOOP my_addr
contient des références circulaires (à travers un lien symbolique). |
Bugs
Les options de proxy transparent ne sont pas décrites.
Conformité
SVr4, BSD 4.4 (l'appel système bind est apparu dans BSD 4.2). SVr4 indique des erreurs générales supplémentaires EADDRNOTAVAIL , EADDRINUSE , et ENOSR, ainsi que les conditions d'erreurs spécifiques au domaine Unix EIO et EISDIR .
Note
Le troisième argument de bind est en fait un int (et c'est ce qu'utilisent BSD 4.*, libc4 et libc5). Une certaine confusion POSIX résulte du "socklen_t" actuel. Voir accept (2).
Voir aussi
accept (2), connect (2), listen (2), socket (2), getsockname (2), ip (7), socket (7).
Traduction
Christophe Blaess, 1996-2003.
Poster un commentaire