#1 Le 20/04/2007, à 16:50
- dialloma
[résolu] Programmation client-serveur (c'est chaud !!!)
Bonjour à tous,
Je ne suis pas expert de la programmation Web mais c'est quelque chose qui me pasionne beaucoup. Etant débutant, plein de chose restent encore floues pour moi notament le développement coté serveur. Alors je ne vais pas pauser des questions débiles, tout ce que je veux c'est un guide pour débutant pour comprendre les différentes approches de programmtion client-serveur. Si vous avez des tutoriels, des livres ou quoi que ce soit que vous pouvez me recommander, je serai ravi de l'accepté. Je veux comprendre le mécanisme d'abord et je verrai comment approfondire mes connaissances. Mais c'est vraiment chaud pour moi. J'ai lu plein de chose et je pense que je n'ai pas encore fixé la chose très bien. SOS S'il vous plaît.
Je vous remercie d'avance et je vous souhaite bon week-end.
Dernière modification par dialloma (Le 24/04/2007, à 08:59)
Hors ligne
#2 Le 20/04/2007, à 18:34
- Watchwolf
Re : [résolu] Programmation client-serveur (c'est chaud !!!)
client-serveur, Web c'est bien différent ca.
Si tu veut un exemple de client/serveur ecrit en C regarde ici:
http://www.cppfrance.com/code.aspx?ID=9319
Apres precise ce que tu veut exactement.
Hors ligne
#3 Le 21/04/2007, à 09:06
- androme
Re : [résolu] Programmation client-serveur (c'est chaud !!!)
Il parle de programmation WEB donc plutôt d'une plate forme LAMP (Linux - Apache - Mysql - PHP)
Il existe des tonnes de tutoriels sur le net en se donnant la peine de chercher.
Intrepid Ibex 64
Asus P5B Deluxe, Q6600, 4Go, 8800GTS 512 Dual Screen (22w + 19w).
Portable Dell D830
Hors ligne
#4 Le 21/04/2007, à 16:14
- Link31
Re : [résolu] Programmation client-serveur (c'est chaud !!!)
Si tu veut un exemple de client/serveur ecrit en C regarde ici:
http://www.cppfrance.com/code.aspx?ID=9319
Le code proposé dans cette page ne fonctionne pas. Voici le code corrigé :
server.c
/*********************/
/**** LE SERVER ******/
/*********************/
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <stdio.h>
#include <stdlib.h>
#define NSTRS 3 // nombre de lignes que l'on va afficher quand le client vas se connecter/
#define ADDRESS "mysocket" // addresse de connection
//Message que nous voulons envoyer au client
char *strs[NSTRS] = {
"Bonjour, je suis le server et j'envoi un message\n",
"au client, (ici nous somme ne deuxieme ligne).\n",
"et la et bien il faut dire enrevoir sur la 3eme ligne :-p.\n"
};
int main(int argc, char** argv)
{
char c;
FILE *fp;
socklen_t fromlen;
register int i, s, ns, len;
struct sockaddr_un saun, fsaun; //declaration des sockets
//Ici on creer une socket de type STREAM que l'on va utiliser poir la communication
//entre le server, ce fichier, et le client
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
{
perror("server: socket"); //si ca foire on affiche => server: socket (c'est pour dire que c'est la socket du server qui a merder)
exit(1);
}
//on creer l'adresse avec laquel on va faire communiquer le server et le client
saun.sun_family = AF_UNIX;
strcpy(saun.sun_path, ADDRESS);
//ici on defait le lien que l'on avait creer sur ADRESSE
unlink(ADDRESS);
//la on prend la taille de la structure
len = sizeof(saun.sun_family) + strlen(saun.sun_path);
//la on fait ce que l'on appelle un bind (raccourci en francais)
if (bind(s, (struct sockaddr *)&saun, len) < 0)
{
perror("server: bind"); //si ca merde on affiche que c le bind qui merde
exit(1);
}
//on ecoute la socket
if (listen(s, 5) < 0)
{
perror("server: listen"); //si ca merde
exit(1);
}
//ici on accepte la connection du client
//et a ce moment la fsaun contient l'adresse du client
if ((ns = accept(s, (struct sockaddr *)&fsaun, &fromlen)) < 0)
{
perror("server: accept"); //bon comme vous l'avez compris ca c'est si ca merde
exit(1);
}
//ca c'est parceque l'on utilise stdio pour lire la socket
fp = fdopen(ns, "r");
//on commence par envoyer les strint (chaine de caractere :-p au client
for (i = 0; i < NSTRS; i++)
send(ns, strs[i], strlen(strs[i]), 0);
//quand le client lis les string il les affiche
for (i = 0; i < NSTRS; i++)
{
while ((c = fgetc(fp)) != EOF)
{
putchar(c);
if (c == '\n')
break;
}
}
//on a juste a utiliser tout simplement close(); pour fermer la socket
close(s);
exit(0);
}
client.c
/***********************/
/****** LE CLIENT *****/
/***********************/
//Bon la pour le client je n'est pas mis de commentaire car c'est quasiment identique au server les foonctions utilisees sont ls memes donc pas la peine de reexpliquer 2 fois la meme chose ;-)
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <stdio.h>
#include <stdlib.h>
#define NSTRS 3 // nombre de lignes que l'on veut envoyer au server
#define ADDRESS "mysocket" // adresse sur laquel on communique avec le server (en fait c'est un ficheir verrouiller que l'on creer)
//les messages que l'on veut envoyer au server
char *strs[NSTRS] = {
"Salut moi je suis le client.\n",
"et comme tu voi je peut aussi envoyer.\n",
"des messages lol.\n"
};
int main(int argc, char** argv)
{
char c;
FILE *fp;
register int i, s, len;
struct sockaddr_un saun;
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
{
perror("client: socket");
exit(1);
}
saun.sun_family = AF_UNIX;
strcpy(saun.sun_path, ADDRESS);
len = sizeof(saun.sun_family) + strlen(saun.sun_path);
if (connect(s, (struct sockaddr *)&saun, len) < 0) {
perror("client: connect");
exit(1);
}
fp = fdopen(s, "r");
for (i = 0; i < NSTRS; i++) {
while ((c = fgetc(fp)) != EOF) {
putchar(c);
if (c == '\n')
break;
}
}
for (i = 0; i < NSTRS; i++)
send(s, strs[i], strlen(strs[i]), 0);
close(s);
exit(0);
}
Hors ligne
#5 Le 21/04/2007, à 18:07
- Watchwolf
Re : [résolu] Programmation client-serveur (c'est chaud !!!)
je ne l'avait pas testé, jsute trouvé depuis google.
Hors ligne
#6 Le 24/04/2007, à 08:59
- dialloma
Re : [résolu] Programmation client-serveur (c'est chaud !!!)
Désolé, je n'étais pas disponible les jours passés, c'est pourquoi je n'ai pas réagit. Merci à tous pour vos réponse et je vais voir ce que vous m'avez dit.
Bonne journée
Hors ligne