| 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 |