Votre IP: 38.107.179.244 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]


BIND

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
  4. VALEUR RENVOYÉE
  5. ERREURS
  6. BOGUES
  7. CONFORMITÉ
  8. NOTES
  9. VOIR AUSSI
  10. TRADUCTION

 

NOMIndex

bind - Fournir un nom à une socket  

SYNOPSISIndex

#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);  

DESCRIPTIONIndex

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_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 réellement passée dans le paramètre my_addr dépend du domaine de communication. La structure sockaddr est définie comme :

struct sockaddr {
    sa_family_t sa_family;
    char        sa_data[14];
}

Le seul objet de cette structure est de transtyper le pointeur passé dans my_addr pour éviter les avertissements du compilateur. L'exemple suivant montre comment affecter un nom à une socket du domaine Unix (AF_UNIX) :
#include <sys/socket.h>
#include <sys/un.h>
#include <stdlib.h>
#include <stdio.h>

#define MY_SOCK_PATH "/somepath"

int
main(int argc, char *argv[])
{
    int sfd;
    struct sockaddr_un addr;
    
    sfd = socket(AF_UNIX, SOCK_STREAM, 0);        
    if (sfd == -1) {
        perror("socket");
        exit(EXIT_FAILURE);
    }

    memset(&addr, 0, sizeof(struct sockaddr_un)); 
                        /* Efface la 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) {
        perror("bind");
        exit(EXIT_FAILURE);
    }
    ...
}
 

VALEUR RENVOYÉEIndex

L'appel renvoie 0 quand il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.  

ERREURSIndex

EACCES
L'adresse est protégée et l'utilisateur n'est pas le superutilisateur.
EADDRINUSE
L'adresse est déjà utilisée.
EBADF
sockfd n'est pas un descripteur valide.
EINVAL
La socket est déjà connectée.
ENOTSOCK
sockfd est un descripteur de fichier, pas une socket.

Les erreurs suivantes sont spécifiques aux sockets du domaine UNIX (AF_UNIX) :
EACCES
L'accès à un élément du chemin est interdit. (Voir aussi path_resolution(2).)
EADDRNOTAVAIL
Une interface inexistante est demandée, ou bien l'adresse demandée n'est pas locale.
EFAULT
my_addr pointe en dehors de l'espace d'adresse accessible.
EINVAL
La longueur addr_len est fausse, ou la socket n'est pas de la famille AF_UNIX.
ELOOP
my_addr contient des références circulaires (à travers un lien symbolique).
ENAMETOOLONG
my_addr est trop long.
ENOENT
Le fichier n'existe pas.
ENOMEM
Pas assez de mémoire pour le noyau.
ENOTDIR
Un élément du chemin d'accès n'est pas un répertoire.
EROFS
L'inoeud se trouverait dans un système de fichiers en lecture seule.
 

BOGUESIndex

Les options de proxy transparent ne sont pas décrites.  

CONFORMITÉIndex

SVr4, BSD 4.4 (la fonction bind() est apparue dans BSD 4.2).  

NOTESIndex

Le troisième argument de bind() est en fait un int (et c'est ce qu'utilisent BSD 4.x, libc4 et libc5). Une certaine confusion POSIX a donné le « socklen_t » actuel, également utilisé dans la glibc. Voir accept(2).  

VOIR AUSSIIndex

accept(2), connect(2), getsockname(2), listen(2), path_resolution(2), socket(2), getaddrinfo(3), ip(7), ipv6(7), socket(7), unix(7)  

TRADUCTIONIndex

Cette page de manuel a été traduite et mise à jour par Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions disponibles sur http://manpagesfr.free.fr/, mais est gérée par l'équipe francophone de traduction de Debian au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS