Création serveur web en c.

Fermé
ben-SUPINFO Messages postés 1 Date d'inscription jeudi 25 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018 - 25 janv. 2018 à 14:14
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 26 janv. 2018 à 13:34
bonjour a tous, je suis en première année a SUPINFO et nous devons faire un serveur web avec la commande GET en c qui affiche notre CV.
nous avons déjà fais durant les cours un serveur TCP/IPV4 qui recevait les messages d'un client. je ne vois pas du tout comment m'y prendre, dois je créer un client ? qu'est ce que le client doit envoyer au serveur et qu'est ce que le serveur reçoit et renvoi ?

merci pour votre aide.
A voir également:

2 réponses

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
25 janv. 2018 à 14:20
Moi je dirais des sockets
0
ouais des sockets sales par différentes couches de P ( pour protocol )...
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 26 janv. 2018 à 14:09
Salut ben-SUPINFO,

Comme tu dis que vous avez déjà fait "durant les cours un serveur TCP/IPV4 qui recevait les messages d'un client", je suppose que tu sais ce que sont les sockets et comment les utiliser pour établir une connexion TCP et communiquer.

Sur tes questions, le mieux, si tu as des doutes, c'est de demander des précisions à l'enseignant (après avoir fait un minimum de recherches et de travail). Cependant, voilà quelques idées, qui sont des réponses possibles à tes questions.

dois je créer un client ?

Si on te demande de créer un serveur, on ne te demande pas de créer un client. Ton client pourra être n'importe quel navigateur, ou même telnet

qu'est ce que le client doit envoyer au serveur

Dans le cas du navigateur, en supposant que ton serveur tourne sur la même machine et écoute sur le port 8080, tu vas saisir http://localhost:8080 et le navigateur va s'occuper de composer la requête (et d'interpréter ce qu'il va recevoir en réponse).

Avec telnet, tu pourras saisir la requête brute et voir la réponse brute, ce qui te sera utile pour déboguer.

qu'est ce que le serveur reçoit et renvoi ?

Pour savoir cela, tu dois potasser la RFC 7230 et les RFC liées.

Tu as un exemple en Section 2.1, que je reproduis ici :

The following example illustrates a typical message exchange for a
GET request (Section 4.3.1 of [RFC7231]) on the URI
"http://www.example.com/hello.txt":

Client request:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi


Server response:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

Hello World! My payload includes a trailing CRLF.


La RFC 7231 (liée à 7230, parmi d'autres) te servira aussi.

Tu devras renvoyer un code de réponse en première ligne de la réponse. Compte tenu des limitations de ton projet, tu peux probablement te contenter de "200 OK" (en réponse à un
GET / HTTP/1.1
) et de "501 Not Implemented" (dans tous les autres cas).

Ton serveur peut même coder en dur le CV à renvoyer (en HTML avec le Content-Type qui va bien, pour faire joli sur le navigateur), puisque c'est la seule chose qu'il est sensé devoir faire si on interprète tes instructions comme signifiant qu'on ne te demande pas de servir le contenu d'un fichier contenant ton CV (ni ce fichier lui-même) :-)


Dal
0