Pb de client serveur avec les sockets

programmation avec les sockets et les services demandées par le client via une interface grafique(l'heure,date,ls...)

4 réponses

  1. Bonjours,

    Si tu n'es pas plus précis, comment veux-tu être aidé? Tu dois au moins préciser le langage, l'erreur (compile, exec, ...)

    a+

    eric
    0
    1. au sein de l'application client/serveur ,j'ai essayé d'intègrer une interface multiservices
      et en cas de service choisi,comment peut on gèrer le service et envoyer la réponse puis retourner à l'interface
      0
      1. bnj!
        Voici le programe e executer sur la machine client:
        //-----------------------------------------------------------//
        #include <sys/types.h>
        #include <sys/socket.h>
        #include <netinet/in.h>
        #include <netdb.h>
        #include <stdio.h>
        #include <string.h>

        main(argc, argv)
        int argc;
        char *argv[];
        {
        int sock;
        struct sockaddr_in server;
        struct hostent *hp, *gethostbyname();
        char buf[1024];
        char message[1100];

        /***** Creation de la socket ******/

        sock = socket(AF_INET, SOCK_STREAM, 0);
        if (sock < 0)
        {
        perror("SOCKET : Erreur de creation de socket");
        exit(1);
        }

        /*****recuperer le nom de la machine*******/

        server.sin_family = AF_INET;
        hp = gethostbyname(argv[1]);
        if (hp == 0)
        {
        fprintf(stderr, "%s: host inconnu ", argv[1]);
        exit(2);
        }
        bcopy(hp->h_addr, &server.sin_addr, hp->h_length);

        /****** Recuperation du nom du port *******/

        server.sin_port = htons(atoi(argv[2]));

        /***** Etablissement de la connexion ******/

        if (connect(sock, &server, sizeof(server)) < 0)
        {
        perror("CONNECT : Ennui de connexion !!!\n ");
        exit(1);
        }
        else
        printf(" Vous êtes connecté \n\n");
        do
        {
        printf(" Maintenant vous pouvez envoyer vos messages au serveur\n ");
        printf("client :> ");
        scanf("%s",message);
        if (write(sock,message,sizeof(message))< 0)
        perror("WRITE : Erreur d'envoi du message");
        } while(strcmp(message,"exit")!=0);

        printf(" Déconnection !!!\n");

        /******* Fermeture de la socket ********/

        close(sock);
        }
        //-----------------------------------------------------------------//

        est c'est programmé en C sous Unix...
        ....à vous de l executer. (avec celui de Programme Serveur)
        -------
        -------
        -------... A+.
        0
        1. //--------Vouci le prog ;: Serveur. -----------------//
          //----------------------------------------------------//

          #include <sys/types.h>
          #include <sys/socket.h>
          #include <netinet/in.h>
          #include <netdb.h>
          #include <stdio.h>

          main()
          {
          int sock, length,rval;
          struct sockaddr_in server;
          int msgsock;
          char buf[1024];

          /******creation de la socket******/

          sock = socket(AF_INET, SOCK_STREAM, 0);
          if (sock < 0)
          {
          perror("SOCKET : Erreur d’initialisation de socket");
          exit(1);
          }

          server.sin_family = AF_INET;
          server.sin_addr.s_addr = INADDR_ANY;
          server.sin_port = 0;

          /*******creation d' une association d'adresse*******/

          if (bind(sock, &server, sizeof(server)))
          {
          perror("BIND : Erreur d’association d’adresse");
          exit(1);
          }

          /******Extraction du numero du port*******/

          length = sizeof(server);
          if (getsockname(sock, &server, &length))
          {
          perror("GETSOCKNAME : Erreur sur le nom de la socket");
          exit(1);
          }
          printf("Accessibilité au service sur le port numéro :%d\n",ntohs(server.sin_port));

          /* le serveur entre dans le monde d'ecoute de communication */

          /****initialiser la queue d'ecoute *******/

          listen(sock, 5);

          /*******acceptation des demandes de connexion***********/
          msgsock = accept(sock, 0, 0);
          if (msgsock <0)
          perror("ACCEPT : Erreur d'acceptation de demande de connexion");

          else do
          {
          bzero(buf, sizeof(buf));
          if ((rval = read(msgsock, buf, 1024)) < 0)
          perror("READ : Erreur de lecture du message");
          if (rval == 0)
          printf("READ : Aucun client connecte !!! \n");
          else {
          printf(" :> %s\n",buf);
          printf("\nMessage bien recu \n " );

          /*****le client demande une deconnexion*****/
          if ( strcmp( buf,"exit") ==0)
          {
          printf("Client/Déconnecté !!!\n");
          break;
          }
          }
          } while (rval != 0);

          /****** fermeture de la socket*****/
          close(msgsock);
          }
          ///////
          à executer sur la machine seveur.
          0