[langage C] Créer un logiciel client/serveur type ftp sous Linux

Créer un logiciel client/serveur type ftp sous Linux [langage C] - C - Programmation

Marsh Posté le 12-05-2004 à 16:00:14    

Salut,
 
Tout d'abord, pour la section du forum, j'ai posté ici mais je suis pas sûr de mon coup car le sujet traite à la fois de programmation et d'OSA.
 
Quoi qu'il en soit, je vais vous présenter la chose et on verra bien :)
 
Donc je dois créer une appli client/serveur  de type ftp sous Linux en C.  
 
Les fonctionnalités sont assez basiques: téléchargement de fichiers et authentification à partir du client.
 
En bref, le client s'authentifie. Une liste de fichier lui est envoyée. Il choisit un fichier et celui ci est téléchargé dans un répertoire précis.
 
Ma question concerne les moyens pour mettre en place cette architecture.
 
Faut il utiliser plutot les sockets, les tubes nommés ou un mélange des 2?
 
J'ai un peu de mal à comprendre le fonctionnement des tubes nommés.
 
Je voyais bien une utilisation des sockets. Par contre c'est pour transférer des fichiers; je vois pas trop comment faire via les sockets.
Vu qu'on fait des read et des write, lire un fichier ça me semble bizarre. Lire le contenu du fichier ok. Mais est ce qu'on peut envoyer le fichier en tant que tel via un socket.
 
Si quelqu'un peu m'éclairer :)
 
 

Reply

Marsh Posté le 12-05-2004 à 16:00:14   

Reply

Marsh Posté le 12-05-2004 à 16:53:58    

Personne :??:

Reply

Marsh Posté le 12-05-2004 à 16:59:00    

« Je voyais bien une utilisation des sockets. Par contre c'est pour transférer des fichiers; je vois pas trop comment faire via les sockets. »
 
sans déconner ?  
 
comment ? ben tu écris d'un côté et tu lis de l'autre
 

Reply

Marsh Posté le 12-05-2004 à 17:16:20    

J'aime ta façon d'aider les autres
 
Peut-être qu'il aimerait connaitre les fonctions pour envoyer et recevoir via la socket (genre send et rcv).
 
Enfin bref, tu envois ce que tu lis et tu écris ce que tu reçois.

Reply

Marsh Posté le 12-05-2004 à 17:20:29    

bah oui mais bon, il a vu le mot socket et apres il a rien fait
 
un simple "man socket" et les manuels adjacents lui auraient appris déjà énormément

Reply

Marsh Posté le 12-05-2004 à 17:30:17    

Bon, j'ai dû mal m'exprimer.
Je connais les read write & co.
Je sais envoyer un fichier texte.
Mais par exemple pour une image, si le client clic sur l'image et demande à télécharger, comment ça se passe?
Je vais pas faire un write de l'image dans le socket :/

Reply

Marsh Posté le 12-05-2004 à 17:34:09    

ben si

Reply

Marsh Posté le 12-05-2004 à 17:41:10    

Ah bon.
Donc on peut envoyer de tout dans un socket. par exemple un signal :??:

Reply

Marsh Posté le 12-05-2004 à 17:42:46    

non mais ça va pas ? un socket, c'est rien de plus qu'un descripteur de fichier : tu écris et tu lis, à peu prèscomme si tu travaillais avec un fichier sur disque dur classique

Reply

Marsh Posté le 12-05-2004 à 17:46:08    

Ah bon ok.
Merci :jap:
Désolé j'ai un peu du mal sur le principe.
 
Peux tu me dire la différence par rapport au tube nommé? Car le tube nommé permet la communication entre 2 processus. Et j'ai lu que c'est notamment utilisé dans la communication client/serveur.
je sais qu'on peut faire des read/write aussi.
 
Quelle est donc la différence entre les 2? quel mécanisme il vaut mieux utiliser :??:

Reply

Marsh Posté le 12-05-2004 à 17:46:08   

Reply

Marsh Posté le 12-05-2004 à 17:50:28    

oui, les tubes nommés ou les socket unix sont des mécanismes de communications inter-processus, donc sur la même machine. par exemple, ton serveur X ou d'autres programmes utilisent ce genre de mécanisme. mais sur un réseau c'est différent. enfin pas tellement, l'interface est la même (même primitives de communication) mais le triperie est très très différent.
 
tu veux faire du client/serveur réseau ? utilise les socket réseau

Reply

Marsh Posté le 12-05-2004 à 18:07:03    

Ok merci pour toutes ces infos :jap:
 
A+ :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed