Pb de client serveur avec les sockets

Fermé
malak - 9 déc. 2004 à 11:56
 kaal - 30 janv. 2005 à 18:15
programmation avec les sockets et les services demandées par le client via une interface grafique(l'heure,date,ls...)

4 réponses

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
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
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
//--------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