bind | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/types.h> /* Voir NOTES */ #include <sys/socket.h> int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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_INET6 voir ipv6(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). La structure actuelle passée comme argument addr dépendra de la famille d'adresses. La définition de la structure sockaddr est quelque chose comme :
struct sockaddr { sa_family_t sa_family; char sa_data[14]; }Le seul objectif de cette structure est de transtyper le pointeur structure passé dans addr afin d'éviter les avertissements à la compilation. Voir EXEMPLE plus loin.
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Les erreurs suivantes sont spécifiques aux sockets du domaine UNIX (AF_UNIX) :
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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, également utilisé dans la glibc. Voir accept(2).
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
EXEMPLE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'exemple suivant montre comment attacher une socket dans le domaine Unix (AF_UNIX), et accepter les connexions :
#include <sys/socket.h> #include <sys/un.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #define MY_SOCK_PATH "/unchemin" #define LISTEN_BACKLOG 50 #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) int main(int argc, char *argv[]) { int sfd, cfd; struct sockaddr_un addr, peer_addr; socklen_t peer_addr_size; sfd = socket(AF_UNIX, SOCK_STREAM, 0); if (sfd == -1) handle_error("socket"); memset(&addr, 0, sizeof(struct sockaddr_un)); /* Clear structure */ addr.sun_family = AF_UNIX; strncpy(addr.sun_path, MY_SOCK_PATH, sizeof(addr.sun_path) - 1); if (bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr_un)) == -1) handle_error("bind"); } if (listen(sfd, LISTEN_BACKLOG) == -1) handle_error("listen"); } /* Now we can accept incoming connections one at a time using accept(2) */ peer_addr_size = sizeof(struct sockaddr_un); cfd = accept(sfd, (struct sockaddr *) &peer_addr, &peer_addr_size); if (cfd == -1) handle_error("accept"); } /* Code pour gérer la (les) connexion(s) entrante(s)... */ /* Lorsqu'il n'est plus nécessaire, le chemin de la socket, MY_SOCK_PATH doit être effacé avec unlink(2) ou remove(3) */ }x.SH VOIR AUSSI accept(2), connect(2), getsockname(2), listen(2), socket(2), getaddrinfo(3), ip(7), ipv6(7), path_resolution(7), socket(7), unix(7)
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 9 octobre 1996 et révisée le 8 janvier 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 bind ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
EACCES | ERREURS |
EADDRINUSE | ERREURS |
EADDRNOTAVAIL | ERREURS |
EBADF | ERREURS |
EFAULT | ERREURS |
EINVAL | ERREURS |
ELOOP | ERREURS |
ENAMETOOLONG | ERREURS |
ENOENT | ERREURS |
ENOMEM | ERREURS |
ENOTDIR | ERREURS |
ENOTSOCK | ERREURS |
EROFS | ERREURS |