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

Réseau C Discussion :

sendto() : invalid argument


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 57
    Par défaut sendto() : invalid argument
    Bonjour tout le monde!
    Voila dans mon programme j'ai un sendto qui envoi une requete à un serveur.
    Jusque la mon sendto fonctionnait bien mais quand j'ai paramétré le port udp, sendto() me renvoi cette erreur : sendto() : invalid argument.

    Quand je rentre le port en dur comme ici : si_other.sin_port = htons(1903); tout fonctionne correctement. En vérité, mon port est contenu dans un fichier texte. Donc je vais le chercher, je le retransforme en int grâce à la fonction atoi(), je l'affiche et j'affiche exactement ce qu'il me faut. Par contre quand je le passe dans le htons, quand je compile le sendto n'est pas content.

    Quelqu'un aurait-il une idée ?
    Merci

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    On peut voir le code?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 57
    Par défaut
    Ui le voila :p
    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
     
    #include ....
     
    char texteudpport[]="Numeros du port UDP :";
    char *strportudp=NULL;
     
    int main(void)
    {
            int udpport;
    	struct sockaddr_in si_other;
    	int s, i, slen=sizeof(si_other);
     
    strportudp = RecupChemin(texteudpport);
    udpport=atoi(strportudp);
     
    if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
              diep("socket");
     
            memset((char *) &si_other, 0, sizeof(si_other));
            si_other.sin_family = AF_INET;
            si_other.sin_port = htons(udpport);
            if (inet_aton(ipcentrale, &si_other.sin_addr)==0) {
              fprintf(stderr, "inet_aton() failed\n");
              exit(1);
            }
    sendto(s, trame, 29, 0, (struct sockaddr *)&si_other, slen)==-1
    ..
    ...
    }
    La fonction RecupChemin retourne un char*: elle va chercher dans le fichier le numero du port udp

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    J'ai l'impression que tu utilises mal inet_aton() et donc que la structure si_other est mal remplie
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 57
    Par défaut
    Ah bon ?
    Alors c'est surement pour ça que ça foire :/
    Mais le truk c'est que sa marche si je rentre le numero en dur et ça marche aussi si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int numport;
     
    numport = 1903;
     
    ...
    si_other.sin_port = htons(numport);
    Que je fasse ça ou numport = atoi(char*); c'est pareil (nan?) car de toutes façons c'est stocké dans un int et quand je l'affiche j'ai le bon numero

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je pense que cela marche un peu par hazard.

    Si on regarde l'aide de inet_aton() qui au passage est une fonction qu'il ne faudrait plus utiliser, le 2eme paramètre doit être l'adresse d'une structure struct in_addr.

    Dans ton code, tu lui passes l'adresse du membre sin_addr de cette structure struct in_addr. Il y a donc de fortes chances que cela ne soit pas bon.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Invalid argument supplied for foreach()
    Par Rajhonson dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2006, 14h31
  2. Réponses: 11
    Dernier message: 19/05/2006, 11h41
  3. Réponses: 26
    Dernier message: 24/03/2006, 13h44
  4. [Tableaux] Problème invalid argument foreach()
    Par kcizth dans le forum Langage
    Réponses: 9
    Dernier message: 05/01/2006, 11h56
  5. Invalid argument?
    Par Anduriel dans le forum Langage
    Réponses: 24
    Dernier message: 12/10/2005, 19h15

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