Programmation en C, client/serveur HTTP
sebs211@hotmail.fr
-
lessage -
lessage -
Bonjour, voila je doit créer 2 programmes en C pour un projet de client/serveur HTTP.
Problem je n'y connait absolument rien en réseaux, j'ai des de bonne bases en language C et à mon grand regret c tout....
Donc voila si une bonne âme charitable pouvait m'aider sa serait cool,
Merci d'avance.
Voici le sujet du TP :
DUT Informatique
Projet de client/serveur HTTP
Les programmes sont a developper indifferemment sous les machines ki-
rov.cnam.fr ou vlad.cnam.fr, cette derniere etant accessible depuis une connec-
tion internet via ssh.
Un fichier README.txt documente vos codes C et les parametres qu’il faut
donner aux commandes de lancement et comment on les recupere. Le tout dans
un fichier .gz.
Les conditions de notation sont les suivantes :
– le fichier .gz est ”deplie” sur la machine cliente et le script de compilation
est lance pour produire les executables sur le client
– le fichier .gz est ”deplie” sur la machine serveur et le script de compilation
est lance pour produire les executables sur le serveur
Premiere partie
Prise en main
Testez :
telnet www.example.com 80 “tapez return”
1
ligne suivante :
GET /index.html HTTP/1.0 “tapez return” “tapez return”
Deuxieme partie
Client
1 Description du Programme*
Ecrivez un programme simple en HTTP qui :
1. construise un message de requete HTTP 1.0 base sur la ligne de commande
de l’utilisateur
2. imprime le message construit sur la ligne de sortie
3. envoie le message construit sur le serveur HTTP specifie dans la ligne de
commande de l’utilisateur
4. recoive et imprime le message de reponse dans un fichier de sortie.
2 Ce qu’il faut faire
Command line usage : client <URL> <file> <port>
Le fichier executable s’appelle client. Les entrees et les sorties du pro-
gramme client sont les suivantes.
2.1 L’entree du programme client
Le client prends des arguments obligatoires “URL” “file” et “port”. L’ar-
gument “URL” specifie l’URL du site. L’argument “file” sp´ecifie le fichier a
telecharger et a afficher et l’argument “port” specifie le port sur lequel on se
connecte.
2.2 La sortie du programme client
Le client ecrit le message requete dans la sortie standard et ecrit le message
de reponse recu du serveur HTTP dans un fichier de sortie nomme reponse.txt.
2.3 Methode
Le programme client devrait :
– ouvrir une socket et la connecter au serveur HTTP tournant sur l’hote.
– Construire un message de requete HTTP 1.0. Le message de requete doit
etre sous la forme d’une chaıne de caracteres dans laquelle toutes les lignes
du message sont concatenees.
– Construire un message de requete HTTP 1.0 avec l’operation “GET”. Par
exemple, l’argument en ligne de commande
www.example.com index.html 1234
donnera comme message :
GET /index.html HTTP/1.0\r\n\r\n
– Ecrire les message construit sur la sortie standard. Toute ligne, y compris
la derniere ligne vide, doit etre imprimee en sortie.
– Envoyer le message construit, recevoir le message de reponse et ecrire le
message de reponse dans un fichier de sortie appele reponse.txt.
3 Compiler le programme client et creer le fi-
chier executable
Utilisez GCC (gcc -o client client.c) pour compiler le programme client
et creer le fichier executable. Le fichier executable s’appelle client.
4 Testez votre client
Vous pouvez utiliser votre client pour vous connecter a n’importe quel ser-
veur HTTP, comme celui donne en premiere partie en utilisant le numero de
port approprie (vous etes senses savoir lequel). Vous devriez utiliser differentes
URLs pour vous assurer que le client fonctionne correctement.
Vous pouvez mettre le corps de message du message de reponse que vous
recevez du serveur dans un fichier .html et utiliser un navigateur Web pour
le visionner. Comparez les resultats avec ceux que vous obtenez en mettant
directement l’URL dans le navigateur Web.
On peut s’aider des includes suivants :
#include <stdio.h>
#include <signal.h>
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
Troisieme partie
Server
5 Description du Programme
Ecrivez un programme simple de serveur HTTP qui :
– recoit une seule requete a un moment donne.
– votre programme HTTP recoit et reponds a la requete d’un client HTTP
simple. Le programme server
1. attends la connection de la requete
2. s’il y a connection, le programme server accepte la connection
3. puis il ecrit le port et l’adresse IP du client qui se connecte
4. lis le message de la requete HTTP
5. reponds `a la requete
6. a la fin de la connection du client, le serveur revient dans son etat
initial et attends la prochaine connection.
6 Ce qu’il faut faire
Un programme server.
Les entrees et les sorties du programme server sont les suivantes.
6.1 L’entree du programme server
Le programme server ne prends pas d’entree.
6.2 La sortie du programme server
Le programme server ecrit l’adresse IP et le numero de port du client se
connectant sur la sortie standard.
6.3 Methode
Le programme server devrait :
1. Ouvrir une socket qui s’attache a l’adresse du protocole local et attendre
une connection d’un client.
2. S’il y a une connection entrante, accepter la connection, imprimer l’adresse
IP, et le numero de port du client sur la sortie standard.
3. Lisez le message de requete HTTP et construisez le message HTTP de
reponse.
4. Le client envoie une requete GET.
Si l’objet de la requete n’est pas trouve, le message de reponse contient la
ligne de statut : “HTTP/1.0 404 Not Found” et un corps de reponse vide.
Si l’objet est retrouve le message de reponse contient la ligne de statut
“HTTP/1.0 200 OK”, Content-Length : en ligne d’en-tete, et le corps du
message inclus l’objet en question.
5. Envoyez le message de reponse HTTP et retourner au point 2.
6.4 Indices
– Utilisez un numero de port qui ait une chance de passer, comme un numero
assez eleve. Plus d’information sont dans /etc/services
7 Testez votre serveur
– Mettez une fichier HTML a l’adresse appropriee.
– Lancez votre serveur HTTP
– Testez votre serveur en vous connectant via votre browser habituel sur le
port de votre serveur a l’adresse locale.
– Lancez votre client sur votre serveur au port appropri´e et avec le bon
fichier HTML.
– Verifiez le resultat.
Problem je n'y connait absolument rien en réseaux, j'ai des de bonne bases en language C et à mon grand regret c tout....
Donc voila si une bonne âme charitable pouvait m'aider sa serait cool,
Merci d'avance.
Voici le sujet du TP :
DUT Informatique
Projet de client/serveur HTTP
Les programmes sont a developper indifferemment sous les machines ki-
rov.cnam.fr ou vlad.cnam.fr, cette derniere etant accessible depuis une connec-
tion internet via ssh.
Un fichier README.txt documente vos codes C et les parametres qu’il faut
donner aux commandes de lancement et comment on les recupere. Le tout dans
un fichier .gz.
Les conditions de notation sont les suivantes :
– le fichier .gz est ”deplie” sur la machine cliente et le script de compilation
est lance pour produire les executables sur le client
– le fichier .gz est ”deplie” sur la machine serveur et le script de compilation
est lance pour produire les executables sur le serveur
Premiere partie
Prise en main
Testez :
telnet www.example.com 80 “tapez return”
1
ligne suivante :
GET /index.html HTTP/1.0 “tapez return” “tapez return”
Deuxieme partie
Client
1 Description du Programme*
Ecrivez un programme simple en HTTP qui :
1. construise un message de requete HTTP 1.0 base sur la ligne de commande
de l’utilisateur
2. imprime le message construit sur la ligne de sortie
3. envoie le message construit sur le serveur HTTP specifie dans la ligne de
commande de l’utilisateur
4. recoive et imprime le message de reponse dans un fichier de sortie.
2 Ce qu’il faut faire
Command line usage : client <URL> <file> <port>
Le fichier executable s’appelle client. Les entrees et les sorties du pro-
gramme client sont les suivantes.
2.1 L’entree du programme client
Le client prends des arguments obligatoires “URL” “file” et “port”. L’ar-
gument “URL” specifie l’URL du site. L’argument “file” sp´ecifie le fichier a
telecharger et a afficher et l’argument “port” specifie le port sur lequel on se
connecte.
2.2 La sortie du programme client
Le client ecrit le message requete dans la sortie standard et ecrit le message
de reponse recu du serveur HTTP dans un fichier de sortie nomme reponse.txt.
2.3 Methode
Le programme client devrait :
– ouvrir une socket et la connecter au serveur HTTP tournant sur l’hote.
– Construire un message de requete HTTP 1.0. Le message de requete doit
etre sous la forme d’une chaıne de caracteres dans laquelle toutes les lignes
du message sont concatenees.
– Construire un message de requete HTTP 1.0 avec l’operation “GET”. Par
exemple, l’argument en ligne de commande
www.example.com index.html 1234
donnera comme message :
GET /index.html HTTP/1.0\r\n\r\n
– Ecrire les message construit sur la sortie standard. Toute ligne, y compris
la derniere ligne vide, doit etre imprimee en sortie.
– Envoyer le message construit, recevoir le message de reponse et ecrire le
message de reponse dans un fichier de sortie appele reponse.txt.
3 Compiler le programme client et creer le fi-
chier executable
Utilisez GCC (gcc -o client client.c) pour compiler le programme client
et creer le fichier executable. Le fichier executable s’appelle client.
4 Testez votre client
Vous pouvez utiliser votre client pour vous connecter a n’importe quel ser-
veur HTTP, comme celui donne en premiere partie en utilisant le numero de
port approprie (vous etes senses savoir lequel). Vous devriez utiliser differentes
URLs pour vous assurer que le client fonctionne correctement.
Vous pouvez mettre le corps de message du message de reponse que vous
recevez du serveur dans un fichier .html et utiliser un navigateur Web pour
le visionner. Comparez les resultats avec ceux que vous obtenez en mettant
directement l’URL dans le navigateur Web.
On peut s’aider des includes suivants :
#include <stdio.h>
#include <signal.h>
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
Troisieme partie
Server
5 Description du Programme
Ecrivez un programme simple de serveur HTTP qui :
– recoit une seule requete a un moment donne.
– votre programme HTTP recoit et reponds a la requete d’un client HTTP
simple. Le programme server
1. attends la connection de la requete
2. s’il y a connection, le programme server accepte la connection
3. puis il ecrit le port et l’adresse IP du client qui se connecte
4. lis le message de la requete HTTP
5. reponds `a la requete
6. a la fin de la connection du client, le serveur revient dans son etat
initial et attends la prochaine connection.
6 Ce qu’il faut faire
Un programme server.
Les entrees et les sorties du programme server sont les suivantes.
6.1 L’entree du programme server
Le programme server ne prends pas d’entree.
6.2 La sortie du programme server
Le programme server ecrit l’adresse IP et le numero de port du client se
connectant sur la sortie standard.
6.3 Methode
Le programme server devrait :
1. Ouvrir une socket qui s’attache a l’adresse du protocole local et attendre
une connection d’un client.
2. S’il y a une connection entrante, accepter la connection, imprimer l’adresse
IP, et le numero de port du client sur la sortie standard.
3. Lisez le message de requete HTTP et construisez le message HTTP de
reponse.
4. Le client envoie une requete GET.
Si l’objet de la requete n’est pas trouve, le message de reponse contient la
ligne de statut : “HTTP/1.0 404 Not Found” et un corps de reponse vide.
Si l’objet est retrouve le message de reponse contient la ligne de statut
“HTTP/1.0 200 OK”, Content-Length : en ligne d’en-tete, et le corps du
message inclus l’objet en question.
5. Envoyez le message de reponse HTTP et retourner au point 2.
6.4 Indices
– Utilisez un numero de port qui ait une chance de passer, comme un numero
assez eleve. Plus d’information sont dans /etc/services
7 Testez votre serveur
– Mettez une fichier HTML a l’adresse appropriee.
– Lancez votre serveur HTTP
– Testez votre serveur en vous connectant via votre browser habituel sur le
port de votre serveur a l’adresse locale.
– Lancez votre client sur votre serveur au port appropri´e et avec le bon
fichier HTML.
– Verifiez le resultat.
A voir également:
- Programmation en C, client/serveur HTTP
- Http - Guide
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Http //192.168.l.l - Guide
- Changer serveur dns - Guide
- Http //192.168.l.49.1 anycast setup en francais ✓ - Forum Téléphones & tablettes Android