Pb de client serveur avec les sockets

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

4 réponses

  1. eric
     
    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
  2. maha
     
    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
  3. kaal
     
    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
  4. kaal
     
    //--------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