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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    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.

  3. #3
    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
    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 ...

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    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

  5. #5
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    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.

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    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

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