Recherche programmeur C

samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006 - 29 janv. 2006 à 16:21
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006 - 29 janv. 2006 à 19:45
Bonjour,

Voilà pour un sujet dans le cadre d'une formation en info, j'ai un projet à faire en C.

Si quelque pense pouvoir m'aider ou même répondre à ses différentes questions je suis prêt.

Un paiement est possible, contactez moi via MP



Le sujet :








Enoncé du projet



On considère une application
client-serveur pour laquelle les processus clients et les processus serveurs
s’exécutent sur une même machine.



Cette application permet de
réserver des places pour un ensemble de spectacles.



Des processus clients remettent
deux types de requêtes à destination du serveur de réservation :



- requête de consultation
permettant de consulter le nombre de places restantes pour un spectacle donné.



- requête de réservation
permettant de réserver n places pour un spectacle donné.



Le serveur de réservation est
composé de deux processus :



- un processus serveur
Consultation prend en compte les requêtes de consultation. Pour chacune d’elle,
il renvoie le nombre de places disponibles pour le spectacle spécifié dans la requête.



- un processus serveur
Réservation prend en compte les requêtes de réservation. Pour chacune d’elle,
il créé un processus fils qui effectue la réservation si cela est possible.
Dans le cas où la réservation a pu être faite, le processus fils renvoie au
client un acquittement de réservation et sinon un message d’erreur.



Les informations concernant les
spectacles sont stockées dans une table en mémoire centrale. Une entrée de la
table concerne un spectacle et donne les informations suivantes : Intitulé du
spectacle, nombre de places restantes, date de la représentation. Chaque
spectacle est joué une seule fois.















Contraintes :



- les clients et les serveurs
sont sur une même machine ;



- les processus fils du
processus serveur Réservation recouvrent le code hérité du père par une code
exécutable contenant les actions de réservation.














Travail demandé




- Choisissez les outils de communication qui vous
paraissent les plus adaptés entre d’une part, les clients et les serveurs,
d’autre part entre le processus Réservation et ses fils. Justifiez votre choix.




- Détaillez la structure des messages échangés entre les
processus.




- Spécifiez une solution permettant de réaliser les actions
décrites dans l’énoncé. Vous donnerez notamment les pseudos codes précis de
chacun des processus suivants :




- le processus client ;




- le processus Réservation




- le processus fils du processus Réservation




- le processus Consultation




Facultatif




- Codez tout ou partie de
l’application en C sous Linux.

11 réponses

platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
29 janv. 2006 à 17:10
Salut....

Je suppose que c'est a rendre pour dans deux heures et que tu paieras un allopass pour la totalité du projet réalisé.... Nan je veux dire faut pas déconner non plus, on est pas là pour faire le boulot des autres... Attaques ton projet, et si tu as un souci particulier, pose ta question, et on pourra te répondre
Bonne soirée @+
0
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 17:14
oui oui je suis deçus lol

Et c'est pas à rendre dans les 2h c'est 2 jours lol

Et c'est pas un allopass mais 30? via paypal par exemple ...
0
Vale Erian Messages postés 153 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 28 janvier 2008
29 janv. 2006 à 17:15
Le but c'est que tu fasse le projet pour te former en C, sinon ca sert à rien.
0
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
29 janv. 2006 à 17:20
Très juste Vale Erian...
Et puis il y a encore quelque chose qu'on apprend très vite quand on fait une formation en info... Par exemple en IUT (comme moi :p)... On attend pas deux jours avant de rendre un projet avant de le commencer ! On se fait avoir une fois parce qu'on se dit c'est facile, deux fois parce que c'est pas compliqué, puis la troisième fois, on s'y met de suite et, comme par hasard, on termine dans les temps :)

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 17:24
lol oui je suis bien ok ...

Mais bon ce sont des cours du soir ...donc la famille, le boulot etc... et paf le projet qui arrive dans les dents lol



Voilà ou j'en suis :







Communication
la plus adaptée clients/serveur : Socket




Justification :




client/serveur
: pas de relation entre les processus donc pas de connaissance de l'un pour
l'autre d'un point de vue système. Donc utilisation du réseau même en loopback












Communication
la plus adaptée serveur/fils : IPC






Justification :




serveur
et proc fils : communication via l'ID du proc père et mémoire partagée entre
les différents proc







Pseudo code client :



Client :






SOCKET
sSocket = null



STRING
SERVER_ADDRESS



INTEGER
SERVER_PORT



STRING
sRequest = null



STRING
sSpecName = null



DATE
sSpecDate = null



INTEGER
iAvailable = 0



INTEGER
iWished = 0






sSocket =
Ouvrir_Socket(SERVER_ADDRESS, SERVER_PORT)



SI sSocket
null ALORS




Affiche « Impossible de se connecter au serveur » + SERVER_ADDRESS + « : » +
SERVER_PORT




Exit(-1)



FSI






#MENU DE
SELECTION POUR FAIRE LA
REQUETE#



SI sRequest
« Consult » ALORS




REPONSE = sSocket.Envoi(« Consult »)



TANT
QUE REPONSE != null FAIRE




Affiche « Nom spectacle : » + REPONSE.sSpecName + « Date : » +
REPONSE.sSpecDate + « Place dispo : » +
REPONSE.iAvailable



FIN
TANT QUE






SINON




REPONSE =
sSocket.Envoi(« sSpecName|sSpecDate|iWished ») ;



SI
REPONSE == -1 ALORS




Affiche « IMPOSSIBLE DE RESERVE LE NOMBRE DE PLACE
DESIRE »




SINON




Affiche « reservation effectuée »




FSI



FSI
0
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
29 janv. 2006 à 17:33
Re....
Autant pour moi, je croyais que tu suivais une formation continue....

Donc ton pseudo-code pour le client m'a pas l'air mal, j'ai juste l'impression qu'il y a un souci dans ta requete de consultation...
Je pense que le serveur devrait retourner par exemple d'abord le nombre de résultats, puis la liste des résultats... Ce que tu as fait est a mon avis correct pour une base de données, mais ne fonctionnerait pas pour les sockets... Donc ca serait plutôt :

NBREPONSE = sSocket.Envoi("Consult");
POUR i de 0 à NBREPONSE
REPONSE = sSocket.Reception();
AFFICHE [...]
FPOUR

@+
0
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 17:52
ok je vois ...

Je vais m'attaquer au serveur ^^
0
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 18:06
voilà une idée :





Serveur :








SOCKET
sSocket = null




STRING
SERVER_ADDRESS




INTEGER
SERVER_PORT




STRING
sRequest = null




STRING
sSpecName = null




DATE
sSpecDate = null




INTEGER
iAvailable = 0




INTEGER
iWished = 0








sSocket =
Ouvrir_Socket(SERVER_ADDRESS, SERVER_PORT)




SI sSocket == null ALORS




Affiche « Impossible de
se connecter » + SERVER_ADDRESS + « : » + SERVER_PORT




Exit(-1)




FSI












WHILE(TRUE)




Lance_Proc_Fils(sSocket.read())








#Lance_Proc_Fils #









IF sSocket.REQUEST.equals("consult") THEN




FOR i = 0 TO ArraySpec.length()
- 1




REPONSE =
REPONSE + "\n" + #les infos#




NEXT




sSocket.sendResponse(REPONSE)




SINON




traitement_reservation




FSI
0
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 18:31
Par contre vous avez une idée pour cette question ?

- Détaillez la structure des
messages échangés entre les processus



Moi je pense simplement à des tableaux contenant les valeurs :



réservation :





client : nom|nb_places










serveur : nb_places réservées || -1 si
impossible de réserver
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
29 janv. 2006 à 19:37
Salut :)

Le descripteur SOCKET n' existe pas sous linux!

"La structure des messages échangés entre les processus", il s'agit certainement du protocole que tu crées pour que les deux extrêmités puissent échanger des données.

Le projet à l' air super intéressant, c'est quoi comme formation ?
0
samy7cav Messages postés 7 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 19:45
tu trouves ça super intéressant lol

Moi j'suis plus a l'aise avec les bdd lol

C'est un cours de Méthode de programamtion système, pour
obtenir une certification professionelle de concepteur-architecte
informatique



Je suis preneur de toutes infos lol
0
Rejoignez-nous