IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

fonction bind() du header socket.h


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 9
    Points
    9
    Par défaut fonction bind() du header socket.h
    Bonjour,
    Alors voila,quelque chose m'échappe avec cette fonction,à savoir que le deuxième paramètre demandé par la fonction:

    Code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include <stdio.h>
     
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
     
     
    int main()
    {
     
     
    //Création du socket , pour l instant la socket n'a pas de PORT ni adresse IP//
     
    int y = socket(AF_INET,SOCK_STREAM,0);
     
     
    //Affectation d'un PORT et d'une IP à la socket//
    struct sockaddr_in adresse ;
     
    adresse.sin_addr.s_addr = inet_addr("127.0.0.1");   
    adresse.sin_family = AF_INET;
    adresse.sin_port = htons(2300);
     
    int x = bind( y , (struct sockaddr*)&adresse  , sizeof(struct sockaddr_in) ); 
     
     
    // => LA VARIABLE "adresse" n'est pas membre de la structure sockaddr mais sockaddr_in , alors  (struct sockaddr*) est juste un nom de pointeur obligatoire ou une réelle structure ?
     
     
    return 0 ;
    }

    Voici ce que l'on trouve dans le header:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # define __CONST_SOCKADDR_ARG	const struct sockaddr *
     
    extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
         __THROW;


    Merci d'avance,

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Le type de structure contenant l'adresse dépend du type de socket. Il y a donc plusieurs types d'adresses de différentes tailles d'où le dernier paramètre.

    Regarde ce lien, a partir de la page 15: https://upsilon.cc/~zack/teaching/13...ocket-unix.pdf Il explique assez bien le concept.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci pour la doc

    C'est bon j ai bien compris le concept.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    À noter que la problématique rencontrée à l'époque quand les sockets ont été définis et qui a conduit à utiliser ce genre d'artifice est en fait exactement ce qui va déboucher sur le concept de classes en programmation orientée objet…

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SOCKET] Intérêt de la fonction bind côté client
    Par barthelv dans le forum Développement
    Réponses: 5
    Dernier message: 11/09/2007, 06h46
  2. socket : fonction bind
    Par hammag dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 21/11/2006, 20h09
  3. [SOCKET] Fonction bind()
    Par chacal dans le forum Développement
    Réponses: 13
    Dernier message: 19/12/2005, 14h22
  4. Récupérer l'adresse de bind d'un socket
    Par gloode dans le forum Réseau
    Réponses: 4
    Dernier message: 04/02/2005, 10h56
  5. [winsock.h] Fonction recv() pour un socket en C
    Par Hikaru dans le forum Windows
    Réponses: 5
    Dernier message: 22/05/2004, 07h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo