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 :

aide sur les sockets


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Voici un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     SOCKADDR_IN sin;
     
      sin.sin_addr.s_addr = htonl(INADDR_ANY);
       sin.sin_family = AF_INET;
       sin.sin_port = htons (port);
    voci l'erreur que le compilateur me renvoi
    ISO C90 forbids mixed declarations and code(je comprend rien a l'erreur)
    voici le code complet :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    void myCallback (void *context, DSM_ServiceHandle serviceHdl, DSM_ComponentHandle componentHdl, DSM_BufContext *dsmBufCtx, eDSM_DataStatus Status ) {
        FILE *TsOut;
      SOCKET sock;
    int sock_err;
    		int n = 0;
    		char buffer[4096];
    	/*Creation de la  socket*/
     
       sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
       if (sock == INVALID_SOCKET)
       {
          printf ("socket()");
          exit (-1);
       }
     
    /*création de la connexion */		
    /* Initialisation */
       SOCKADDR_IN sin;
     
       sin.sin_addr.s_addr = htonl(INADDR_ANY);
       sin.sin_family = AF_INET;
       sin.sin_port = htons (port);
     
     
        TsOut = fopen("out.ts", "ab");
        fwrite( dsmBufCtx->BufAdd, sizeof(DSM_UCHAR), dsmBufCtx->BufSize, TsOut);
     
     
        fclose(TsOut);
     
    		if(dsmBufCtx->BufAdd == NULL)
    		{
    		 printf("buffer vide");
    		}
     
    		else((n = fread (buffer, 1, sizeof buffer, TsOut)) > 0);
     
    		printf("fread");
     
     
     
    /* envoi d'un fragment du fichier pas tout le fichier*/
               sock_err = sendto (sock, buffer, n, 0, (struct sockaddr *) &sin, sizeof (sin));
     
               printf("nombre de bite envoyé est de %d\n", n);
     
    	free(buffer);
     
     
       printf ("Fermeture de la socket...\n");
    /*   sock_err = closesocket (sock);*/
       printf ("Fermeture du serveur terminee\n");
     
        dsmBufCtx->BufSize = 100000;
        if (Status != DSM_DataStatus_Removed)
            DSM_RegisterDataBuffer ( dsmBufCtx, serviceHdl, componentHdl );
    }

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Bonjour,

    vu le message d erreur, je dirais que tu melanges bloc de declarations et bloc de instructions.

    Si je dis pas de c***** en C90 les declarations doivent obligatoirement etre en debut de bloc (generalement a la suite d accolades ouvrantes). Apres la premiere instruction c est plus permis de declarer des variables.
    "vaste programme"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Merci mais le probleme ne viens pas de la mais je ne sais pas ou exctement
    Merci pour vitre aide

  4. #4
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    moi je pense que si.

    si tu remontes la declaration de "SOCKADDR_IN sin;" au niveau des autres declarations, le message d erreur que tu nous a montré devrait disparaitre, apres y a ptet d autres erreurs...
    "vaste programme"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    je ne compred pas ce que vous voulez dire les déclartions sont faite au debut de la fonction.

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Remonte ce bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /*création de la connexion */
    /* Initialisation */
    SOCKADDR_IN sin;
     
    sin.sin_addr.s_addr = htonl(INADDR_ANY);
    sin.sin_family = AF_INET;
    sin.sin_port = htons (port);
    au dessus de l'appel à socket() et ça ira mieux!
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par roujiC Voir le message
    Voici un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SOCKADDR_IN sin;
     
      sin.sin_addr.s_addr = htonl(INADDR_ANY);
       sin.sin_family = AF_INET;
       sin.sin_port = htons (port);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	ISO C90 forbids mixed declarations and code(je comprend rien a l'erreur)
    voci l'erreur que le compilateur me renvoi
    Rien à voir avec les sockets. C'est une question basique de C.

    1 - En C90, les variables doivent être définies au début d'un bloc.
    2 - On peut créer des blocs où on veut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <...>
       {
           SOCKADDR_IN sin;
     
           sin.sin_addr.s_addr = htonl(INADDR_ANY);
           sin.sin_family = AF_INET;
           sin.sin_port = htons (port);
           <...>
       }
    <...>
    Citation Envoyé par nicolas.sitbon Voir le message
    Remonte ce bloc :
    <...>
    au dessus de l'appel à socket() et ça ira mieux!
    Bof, ça n'a aucune importance.

    Citation Envoyé par roujiC Voir le message
    Merci mais le probleme ne viens pas de la <...>
    Il vient très exactement de là. Tu définis sin en vrac dans le code... Il faut le faire au début d'un bloc. Relis tes cours de C.
    Pas de Wi-Fi à la maison : CPL

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Bof, ça n'a aucune importance.
    Pourtant ça revient à ce que tu viens de dire, mettre les déclarations en début de bloc mais bref ...
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    vous jouez trop sur les mots c'est dingue de se prendre autant la tete pour une question de vocabulaire, mais soit, l'informatique est fait comme ca

    donc PI soit tu remontes au début de ta fonction avec les autres déclarations de variables, soi tu encadres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SOCKADDR_IN sin;
     
      sin.sin_addr.s_addr = htonl(INADDR_ANY);
       sin.sin_family = AF_INET;
       sin.sin_port = htons (port);
    dans un bloc avec
    Stay in touch

  10. #10
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Citation Envoyé par oLie93 Voir le message
    vous jouez trop sur les mots c'est dingue de se prendre autant la tete pour une question de vocabulaire, mais soit, l'informatique est fait comme ca
    Bah, c est pas pire que de deterrer un post vieux de 2 semaines et inscrire la meme solution une quatrieme fois.
    "vaste programme"

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par BainE Voir le message
    Bah, c est pas pire que de deterrer un post vieux de 2 semaines et inscrire la meme solution une quatrieme fois.
    Le temps n'a que peut d'importance pour apprendre les choses de la plus juste manière qui soit...
    C'est ainsi que se construit le monde...
    Et si t'avais relu le post dans sa totalité tu aurais noté que la bonne solution n'est mentionné que 3 fois

    Je ne me rappelais plus pourquoi j'avais arrêté de consulter ce forum, mais maintenant je sais: l'agressivité persistante et omniprésente y est carrément chiante, à croire que tout mec qui post une solution ou son point de vue sur un problème doit avoir à son actif + de 5000posts et doit avoir écrit un bouquin pour prétendre pouvoir échapper au lynchage publique de BainE et sa bande...
    bravo, continue comme ca t'aura plein d'amis
    Stay in touch

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par oLie93 Voir le message
    Je ne me rappelais plus pourquoi j'avais arrêté de consulter ce forum, mais maintenant je sais: l'agressivité persistante et omniprésente y est carrément chiante, à croire que tout mec qui post une solution ou son point de vue sur un problème doit avoir à son actif + de 5000posts et doit avoir écrit un bouquin pour prétendre pouvoir échapper au lynchage publique de BainE et sa bande...
    bravo, continue comme ca t'aura plein d'amis
    Je te conseille de prendre un peu de recul et de réfléchir au sens que tu donnes à tes interventions et aux notres.

    Notre but est d'être utile et précis. Il s'agit d'un domaine technique qui ne supporte pas l'approximation.

    Si tu n'adhères pas à ce principe, je comprends que tu ais du mal à comprendre et même à supporter nos réponses.

    Mais il ne faut y voir aucun sens caché, attaque personnelle ou dérision. Au contraire, tout ce qu'on cherche, c'est l'excellence des réponses fournies. Alors c'est vrai que lorsque la réponse est fausse, ou approximative, on le fait remarquer. C'est une peu normal, non ? Ou alors, si ce site doit fournir des réponses bidons, autant qu'il ferme tout de suite.

    D'autre part, il faut apprendre à accepter les remarques, admettre que l'on se trompe et poser des questions complémentaires si nécessaires.

    Enfin, le but ici n'est pas de se faire des amis, mais de transmettre un enseignement précis, juste et utile, tout en cherchant à stimuler la réflexion du questionneur.

    Ceux qui comprennent ça nous remercient plus tard et deviennent de vrais amis.

    Ceux qui crachent dans la soupe se retrouvent seuls...
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    concernant l'exactitude des réponses je suis parfaitement d'accord avec toi.
    Cependant, je pense que
    Citation Envoyé par BainE
    Bah, c est pas pire que de deterrer un post vieux de 2 semaines et inscrire la meme solution une quatrieme fois.
    n'est absolument pas constructif dans la discussion...et je ne vois toujours pas ce que ce post viens préciser au problème posé.

    Ensuite tu pourras remarquer que dans mon post j'ai reconnue que le milieu de l'informatique est fait de précision et d'exactitude, je ne l'ai jamais remis en cause...
    Dans ce même post tu remarqueras la présence d'un smiley de type "mouarf" a connotation joyeuse et positive, signe qu'un message sur un forum est dénué de toute expression d'où la présence de tel smiley à notre disposition. Il est donc parfaitement normal d'interpréter un message aussi bien positivement que négativement tant qu'aucune expression a caractère ou connotation expressive n'y figure (d'où ma réaction).

    En milieu professionnel, je crois bien que je n'ai encore jamais rencontrer de personnes aidant les autres en commençant par les agresser...suis-je bête, moi qui pensais que ça n'existait peut être pas dans ce "milieu"...

    Je te demande à ton tour de prendre du recul et de te mettre à la place d'un newbie sur le forum, le mec vient poser une question et ceux qui lui répondent sont incapable de formuler une réponse sans se tirer dans les pattes...tu aurais envie de rester ?
    Je comprends alors que la majorité des utilisateurs de ce forum n'ait posté que 1 ou 2 messages dans toute leur "durée de vie", cherchant simplement à se procurer la réponse de la plus rapide des manières qui soit, vu que l'intégration au sein de cette "communauté" est synonyme de guerre continue (finalement ce n'est qu'une reproduction à plus petite échelle que ce qu'on constate dans le monde).
    Je remarque aussi que les comportements constatés ici ne sont absolument pas memes que sur fr/com/lang/c (à 1 exception près...) alors que la base d'intervenant est également présente ici...à ton avis pourquoi ?
    Stay in touch

Discussions similaires

  1. aide sur les socket PF_UNIX AF_UNIX.
    Par getstar dans le forum Réseau
    Réponses: 3
    Dernier message: 28/06/2009, 14h47
  2. Aide Sur les fonction system et les socket ?
    Par tozen dans le forum C++
    Réponses: 2
    Dernier message: 26/04/2009, 14h59
  3. aide sur les sockets
    Par ab2el dans le forum C++
    Réponses: 2
    Dernier message: 26/03/2007, 09h21
  4. besoin d'aide sur les sockets
    Par Mnementh63 dans le forum C++
    Réponses: 11
    Dernier message: 24/02/2007, 11h51
  5. Besoin d'aide sur les sockets
    Par cryptorchild dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 03/04/2006, 17h27

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