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 :

Connexion Socket en C sur serv ASTERISK


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Par défaut Connexion Socket en C sur serv ASTERISK
    Bonjour,
    Je suis actuellement en BTS de développement informatique et mon entreprise me demande d'éffectuer une connexion socket sur un serveur ASTERISK je m'y suis donc mis et ce qu'il en ressort c'est une pauvre ligne qui s'affiche a la fin de l’exécution du programme la ligne étant:
    Asterisk Call Manager/1.1
    je suppose donc que la liaison s’effectue bien.
    lors de la compilation du programme j'obtiens un message d’erreur qui est le suivant:

    connexionsock.c: In function ‘main’:
    connexionsock.c:84:30: warning: comparison between pointer and integer [enabled by default]

    je ne comprend pas bien cette erreur car je ne pense pas avoir utilisé de pointeurs dans mon code.
    voici donc mon 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
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    #include <sys/socket.h>
    #include <resolv.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <stdio.h>
    #include <unistd.h>
     
    #define PORT_TIME       13              /* "time" (not available on RedHat) */
    #define PORT_FTP        5038              /* FTP connection port */
    #define SERVER_ADDR     "192.168.112.238"     /* localhost */
    #define MAXBUF          "1024"                    /* DEF Buffer*/
    #define LOGINASTERISK   "AppDWH"                /*login connexion asterisk*/
    #define PASSASTERISK    "AppDWHSecret123"       /*MDP connexion asterisk*/
     
     
    int main()
    {   int sockfd;
        int errno;
        struct sockaddr_in dest;
        char buffer[1024];
        int taille;
     
     
        /*---Open socket for streaming---*/
        if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
        {
            printf("Socket open fail");
            return 0;
        }
     
        /*---Initialize server address/port struct---*/
        bzero(&dest, sizeof(dest));
        dest.sin_family = AF_INET;
        dest.sin_port = htons(PORT_FTP);
        if ( inet_aton(SERVER_ADDR, &dest.sin_addr.s_addr) == 0 )
        {
            printf(SERVER_ADDR);
            return 0;
        }
     
        /*---Connect to server---*/
        if ( connect(sockfd, (struct sockaddr*)&dest, sizeof(dest)) != 0 )
        {
            printf("Connect fail ");
            return 0;
        }
     
        /*---Get "Hello?"---*/
        while(1)
        {
        taille=recv(sockfd,& buffer,sizeof(buffer),0);
        buffer[taille]='\0';
        printf("%s",buffer);
        if ((taille=='\0')||(recv==-1)) break;
        }
        printf("\n");
     
        /*---Clean up---*/
        printf("close connexion\n");
        close(sockfd);
        return 0;
    }
    Si l'un d'entre vous a une petite idée sur les éventuelles erreurs que j'aurai fais je suis preneur.
    cordialement un apprenti développeur dans l'impasse.
    Bonne journée a tous et bon dev

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Utilise les balises [code] ça sera plus agréable pour tout le monde

    J'ai pas compté pour savoir où était le warning mais cette ligne me saute aux yeux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ((taille=='\0')||(recv==-1)) break;
    Tu compares la variable 'taille' (int) avec un caractère (char) (d'où le warning j'imagine). Ensuite pour la deuxième condition ça n'est pas correcte, 'recv' n'est pas une variable ici, je me demande comment ça compile, mais peut importe, c'est la variable taille que tu dois tester de nouveau.

    Ainsi ton problème se réglera tout simplement de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(taille < 1) break;

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Par défaut
    Merci de ta réponse effectivement je n'avais pas vu ces balises code je m'en servirais a partir de maintenant.
    j'ai donc tester ta solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(taille < 1) break;
    Mon programme compile maintenant sans warning, donc c'était bien cette ligne qui me posais problème, malgré ça je n'ai toujours qu'une seule ligne qui s'affiche:

    Asterisk Call Manager/1.1

    Si jamais une autre idée vous traverse l’esprit je suis preneur

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 17
    Par défaut
    Pour la suite il te faudra connaître le protocole, et communiquer avec le serveur via des send/recv. Tes collègues te renseigneront à ce sujet, tu as déjà la connexion initialisée comme tu cherchais à le faire dans ton post initial

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Par défaut
    c'est vrai qu'avec le send ca devrais le faire je vais m'y mettre
    en ce qui concerne les collègues ca va être complexe je suis le seul dev les autres ne font que du réseaux xD
    mais merci a toi

  6. #6
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    peut-être un début de piste pour toi : http://marcelog.github.io/articles/p...roduction.html

Discussions similaires

  1. [WD20] Connexion socket Windev et Asterisk
    Par overchip dans le forum WinDev
    Réponses: 0
    Dernier message: 20/01/2015, 12h01
  2. [MySQL] generer un fichier html a partir de php en interne sur serve
    Par NoobX dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/10/2005, 14h01
  3. Ouvrir une connexion socket
    Par toure32 dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 21h22
  4. connexion socket borland
    Par karl2mil1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 26/07/2005, 08h11
  5. connexion socket asynchrone
    Par jagboys dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2005, 17h04

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