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

Linux Discussion :

Besoin d'aide pour un projet


Sujet :

Linux

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut Besoin d'aide pour un projet
    Bonjour
    je souhaiterais realiser une petite application client ./server qui eteindré mon server a distance
    en fait j'aurais sur le client une IHM avec une combobox qui me proposeré redemarrer / arreter et sur le server un socket a l'ecoute qui repuperé le mot par exemle arreter et qui reagiré en consequence.
    Pour cela je pense utiliser le langage Cou C++ avec pour l'IHM la bibliotheque wxWidget

    donc premiere question Est ce possilble de faire cela ?
    Est ce que ma vision des choses est bonne ou il y a plus simple ?

    et pour finir j'attend toutes remarques , conseils , proposition

    Merci d'avance

    ps : si quelqu'un a des exemple de code utlisant les sockets .....je suis preneur

  2. #2
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Bonjour ZiMo

    Pour les exemples de code
    Y a des tas de codes clients/serveurs en C et C++, mimimum qui te servira de base.

    Pour mes conseils : Sécurise bien ton accès,fais quelques recherches sur pour les libraires SSL et autre système de cryptographie élémentaire, afin d'éviter d'envoyer tes infos en clair sur le réseau.
    Si tu as des problèmes ensuite avec ton code, hésite pas a demander de l'aide à nos amis C++iens.

    WxWidget ? très bon choix.

    Structure bien ton programme, pour éviter un maximum de bugs.
    Surtout que tu peux l'étendre ensuite à plein de fonctions.

    Sinon, c'est un très bon entrainement, je l'ai réalisé en Java à mes débuts et c'est sympa à faire.
    Grave urgent !!!

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    j'ai suivie ton conseil et j''ai trouver quelque script sur le net en c , je me suis dit kje vais deja tester en console apres on le fera en graphique lol ce fut pas une mauvaise idée parce que le script que j'ai trouvé ne fonctionne pas le voici :

    code pour le client:

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
     
    #include <sys/types.h>
     
    #include <sys/socket.h>
     
    #include <stdio.h>
     
    #include <netinet/in.h>
     
    #include <arpa/inet.h>
     
    #include <unistd.h>
     
     
     
    int main()
     
    {
     
        int sockfd;
     
        int longueur;
     
        struct sockaddr_in adresse;
     
        int resultat;
     
        char car = 'A';
     
     
     
    //  Créer un socket pour le client.
     
        sockfd = socket(AF_INET, SOCK_STREAM, 0);
     
     
     
    //  Nommer le socket, comme convenu avec le serveur
     
        adresse.sin_family = AF_INET;
     
        adresse.sin_addr.s_addr = inet_addr("127.0.0.1");
     
        adresse.sin_port = htons(60000);
     
        longueur = sizeof(adresse);
     
     
     
    //  Connecter maintenant le socket à celui du serveur
     
        resultat = connect(sockfd, (struct sockaddr *)&adresse, longueur);
     
     
     
        if(resultat == -1) {
     
            perror("problème connexion socket: client");
     
            exit(1);
     
        }
     
     
     
    //  On peut maintenant lire et écrire via sockfd.
     
        write(sockfd, &car, 1);
     
    	printf("client: caractère envoyé vers le serveur = %c\n", car);
     
        read(sockfd, &car, 1);
     
        printf("client: caractère renvoyé par le serveur = %c\n", car);
     
        close(sockfd);
     
        exit(0);
     
    }

    code pour le server
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     #include <sys/types.h>
     
    #include <sys/socket.h>
     
    #include <stdio.h>
     
    #include <netinet/in.h>
     
    #include <arpa/inet.h>
     
    #include <unistd.h>
     
     
     
    int main()
     
    {
     
        int sockfd_serveur, sockfd_client;
     
        int long_serveur, long_client;
     
        struct sockaddr_in adresse_serveur;
     
        struct sockaddr_in adresse_client;
     
     
     
    //  Supprimer tout ancien socket et créer un socket non nommé pour le serveur 
     
        unlink("socket_serveur");
     
        sockfd_serveur = socket(AF_INET, SOCK_STREAM, 0);
     
     
     
    //  Nommer le socket.
     
        adresse_serveur.sin_family = AF_INET;
     
        adresse_serveur.sin_addr.s_addr = inet_addr("127.0.0.1");
     
        adresse_serveur.sin_port = htons(60000);
     
        long_serveur = sizeof(adresse_serveur);
     
        bind(sockfd_serveur, (struct sockaddr *)&adresse_serveur, long_serveur);
     
     
     
    // Créer une file d'attente de connexion et attendre les clients
     
        listen(sockfd_serveur, 5);
     
        while(1) {
     
            char ch;
     
            printf("serveur en attente\n");
     
     
     
    		//  Accepter une connexion.  
     
            long_client = sizeof(adresse_client);
     
            sockfd_client = accept(sockfd_serveur,  (struct sockaddr *)&adresse_client, &long_client);
     
     
     
    		//  on peut maintenant lire/écrire vers le client avec sockfd_client.
     
            read(sockfd_client, &ch, 1);
     
            ch++;
     
            write(sockfd_client, &ch, 1);
     
            close(sockfd_client);
     
        }
     
    }
    il me met cette erreur je comprend pas pourquoi :
    debian:/home/tom/socket# ./client_socket_reseau-OK
    problème connexion socket: client: Connection refused
    merci d'avance

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    le forum C est probablement plus indiqué pour ton problème !
    cependant donne un peut plus d'infiormation sur le contexte de l'erreur :
    le serveur est il lancé --> message si il y en a
    2 machine distinct ou 1 seul machine pour tes test ?

    lorsque tu colle un code .... enleve les lignes blanche ........ (aumoins les "inutiles" )

    la compilation ne te genere aucune erreur ?

    ici vite fait sa marche .......
    lancement du serveur :
    --->>serveur en attente
    lancement (autre con,sole) du clients
    -->>client: caractère envoyé vers le serveur = A
    -->>client: caractère renvoyé par le serveur = B
    coté serveur:
    serveur en attente


    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    Bonjour j'ai encoe un petit probleme lors de la connection au socket j'aimerais que l'utilisateur puisse choisr le port pour cela j'ai mis une text controle ainsi je recupere grace a un GetValue ce qui a ds le textcontriol malheureuse ce que je recupere est du type w<xString est il n'y a pas de methode pour convertir un wxString en int .
    je dois le mettre int pour la methode suivant addr.Service(port) ou port est obligatoirement un int

    Comment puis-je faire pour convertir un wxString en int ?

    merci d'avance

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par ZiMo
    Comment puis-je faire pour convertir un wxString en int ?
    Tu peux lire la doc. par exemple.
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    Oué jveux bien mais nul par il m'indique comment convertir un wxString en int
    y a que en double ou long

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    C'est une question pour le forum C, ça...
    Bon...et ça, ça ne marche pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    long l=10;
    int i;
    i = (int)l;
    Avant de se lancer dans wxWindows, il serait bon de commencer par les bases, non ?
    Comme diraient certaines grands-mères : "A vouloir aller trop vite, on finit par s'essoufler".
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    nan ca fonctionne pas deja essayer , on a beau avoir les bases on pourra jamais tout savoir

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Ici, ça marche :
    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
    [dschris@sugar tmp]$ cat convert.c
    #include <stdio.h>
    int main(int argc, char *argv[]) {
    	long l;
    	int i;
    	if (argc!=2) {
    		fprintf(stderr,"Usage : %s <integer>\n",argv[0]);
    		return 1;
    	}
    	l=atol(argv[1]);
    	i=(int)l;
    	printf("i=%i\n",i);
    	return 0;
    }
    [dschris@sugar tmp]$ gcc -o convert convert.c
    [dschris@sugar tmp]$ ./convert
    Usage : ./convert <integer>
    [dschris@sugar tmp]$ ./convert 20
    i=20
    [dschris@sugar tmp]$
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

Discussions similaires

  1. Besoin d'aide pour un projet libre
    Par kanzarih dans le forum Débuter
    Réponses: 6
    Dernier message: 14/10/2008, 12h53
  2. Besoin d'aide pour un projet graphique de concentration
    Par chacha2007 dans le forum LabVIEW
    Réponses: 0
    Dernier message: 21/11/2007, 20h18
  3. besoin d'aide pour un projet en C
    Par chahine59 dans le forum C
    Réponses: 8
    Dernier message: 05/01/2007, 23h23
  4. Besoin d'aide pour un projet en vb6
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/01/2006, 05h25
  5. Besoin d'aide pour un projet de jeu en ligne
    Par FLEO dans le forum Projets
    Réponses: 1
    Dernier message: 21/10/2005, 08h55

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