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 :

Erreur de conversion int to socklen_t


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Erreur de conversion int to socklen_t
    Bonjour,

    J'essaye de developper un petit serveur:

    Déclaration de la machine locale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    struct  sockaddr_in adresse1;
    int adresse1_size = sizeof(adresse1);
    Déclaration de la machine qui se connecte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    struct  sockaddr_in adresse2;
    int adresse2_size = sizeof(adresse2);
    Voila les fonctions bind et accept:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bind(sockfd, (struct sockaddr *) &adresse1, &adresse1_size);
     
    accept(sockfd,(struct sockaddr *) &adresse2, &adresse2_size);
    La compilation de la fonction bind passe tres bien, mais pas pour la fonction connect... J'obtiens le message d'erreur suivant pour la fonction accept...

    Invalid Conversion from int* to socklen_t*
    Je comprend pas, car les fonctions bind et accept ont apparement les memes arguments...

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    En fait ce n'est pas int, mais bien socklen_t (une petite recherche avec Google te donnera plein d'explications sur cette histoire int / socklen_t).

    Pour bind ça passe, car la conversion int -> socklen_t est possible, par contre pour accept ça ne passe pas, en effet tu ne peux pas convertir un int* en socklen_t*.


    PS : soit tu t'es trompé dans ton copié-collé, soit tu as une erreur : bind prend en 3eme paramètre un entier, pas un pointeur.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Effectivement je me susi trompé dans le copier collé

    En ce qui concerne ce maudit socklen_t, y'aurait-il un moyen de contourner ce probleme?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Peut-être en déclarant adresse2_size en socklen_t plutôt qu'en int ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    En faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socklen_t adresse2_size;
    ?

    Je vais essayer, mais je me demande si le sys/socket.h a bel et bien defini ce type, ou si on peut définir une variable comme un type socklen_t... En tout cas merci, et bonne soirée

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si le compilo râle parce qu'il veut un socklen_t, c'est que ce type est défini, et qu'il faut bien que tu l'utilises...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Loulou24
    Si le compilo râle parce qu'il veut un socklen_t, c'est que ce type est défini, et qu'il faut bien que tu l'utilises...
    Tout à fait, ca marche bel et bien maintenant.... Merci énormement...

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

Discussions similaires

  1. [Conversion]int to double
    Par frouge dans le forum Général Java
    Réponses: 6
    Dernier message: 03/02/2012, 09h34
  2. conversion int---->char
    Par andurand dans le forum C++
    Réponses: 10
    Dernier message: 30/05/2005, 17h36
  3. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 22h08
  4. Réponses: 2
    Dernier message: 01/07/2004, 11h36
  5. [débutant] conversion int en hexa
    Par sergoid dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/05/2003, 11h11

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