Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1276 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  Organisation de projet.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Organisation de projet.

n°2103196
Profil sup​primé
Posté le 24-09-2011 à 21:35:36  answer
 

Bonjour,
 
Je souhaite écrire une programme client avec interface graphique...
Je souhaite le faire au mieux...
 
Je décrirais mon programme comme une tri applications composée :
d'un terminal souche
d'une interface graphique comprenant :
  un client pour discuter en réseau
  un client pour jouer en réseau.
 
Pour réaliser ce programme j'écris avec Ada et j'utilise Gtkada.
 
Le processus principal (terminal souche) est le suivant.
 
1 lecture de l'adresse du serveur sur la ligne de commande. (notation IP ou hostname)
2 lecture du username sur l'entrée du terminal.
  2.1 lecture du password sur l'entrée du terminal.
3 Choix du jeu
4 démarrage de l'interface graphique comprenant le client Jeu et le client tchat.
5 retour à 3 ou fin.
 
Je cherche comment architecturer mon programme au delà de cette succinte description.
 
Par exemple, si vous aviez une idée de l'endroit ou je doit lire les argument de ligne de commande.
 
Aussi une question plus vague, comment détacher mon interface de mes thread client ?
 
S'il vous plaît ?
Merci.


Message édité par Profil supprimé le 25-09-2011 à 02:13:55
mood
Publicité
Posté le 24-09-2011 à 21:35:36  profilanswer
 

n°2103207
Profil sup​primé
Posté le 25-09-2011 à 01:24:38  answer
 

Je reprend mon projet à zéro, dans lequel je vais essayer de faire une et une seul chose à la fois.
J'ai commencé le client de la manière suivante :
 

Code :
  1. with Warborg.Xborg.Terminal;
  2. use Warborg.Xborg;
  3.  
  4. with Ada.Command_Line, Ada.Text_Io;
  5. use Ada;
  6.  
  7. with Gnat.Sockets;
  8. use Gnat;
  9.  
  10. procedure Xborg is
  11.  
  12.   procedure Usage is
  13.  
  14.   begin
  15.      Text_Io.Put_Line("usage : " & Command_Line.Command_Name & "  -a IP | -n Hostname" );
  16.   end Usage;
  17.  
  18.  Args_Error : exception;
  19.  
  20.  Address : aliased Sockets.Sock_Addr_Type;
  21.  
  22. begin
  23.  
  24.   if Command_Line.Argument_Count < 2 then
  25.  
  26.      raise Args_Error;
  27.   end if;
  28.  
  29.   if Command_Line.Argument(1) = "-a" then
  30.  
  31.      begin
  32.  
  33.         Address.addr := Sockets.Addresses (Sockets.Get_Host_By_address (Sockets.Inet_addr (Command_Line.Argument(2))));
  34.      end;
  35.   elsif Command_Line.Argument(1) = "-n" then
  36.  
  37.      begin
  38.  
  39.         Address.addr := Sockets.Addresses (Sockets.Get_Host_By_Name (Command_Line.Argument(2)));
  40.      end;
  41.   else
  42.  
  43.      Text_Io.Put_Line(Command_Line.Command_Name & " : unknow switch : " & Command_Line.Argument(1));
  44.  
  45.      raise Args_Error;
  46.   end if;
  47.  
  48.   Terminal.Run(Address'access);
  49.  
  50. exception
  51.   when Args_Error =>
  52.      Usage;
  53. end Xborg;


 
Je detecte sur la ligne de commande si c'est une notation par nom ou par adresse et je file l'adresse à Terminal.Run.
 
Comment ?


Message édité par Profil supprimé le 25-09-2011 à 06:10:36
n°2103208
Profil sup​primé
Posté le 25-09-2011 à 02:13:23  answer
 

Dans la procédure Terminal.Run je complète l'adresse avec le N° du port, j'initialise la connexion avec le serveur.

Code :
  1. procedure Run(Address : access Sockets.Sock_Addr_Type) is
  2.      Term_Address      : Sockets.Sock_Addr_Type := Address.all;
  3.      Socket            : Sockets.Socket_Type;
  4.      Channel           : Sockets.Stream_access;
  5.      Command, Response : String_Access;
  6.      Status            : Boolean := False;
  7.  
  8.   begin
  9.  
  10.      Term_Address.Port := 5876;
  11.  
  12.      Sockets.Create_Socket (Socket);
  13.  
  14.      Sockets.Set_Socket_Option
  15.        (Socket,
  16.         Sockets.Socket_Level,
  17.         (Sockets.Reuse_Address, True));
  18.  
  19.      delay 0.2;
  20.  
  21.      Sockets.Connect_Socket (Socket, Term_Address);
  22.  
  23.      Channel :=  Sockets.stream(Socket);
  24.  
  25.      loop
  26.         Response := new String ' (String'Input(Channel));
  27.         Print(Response.all, 0.02, False);
  28.         Command := new String ' (Text_Io.Get_Line);
  29.         String'Output(Channel, Command.all);
  30.         Status := Boolean'Input(Channel);
  31.         case Status is
  32.            when True =>
  33.               null;
  34.            when False =>
  35.               null;
  36.         end case;
  37.      end loop;
  38.   end Run;

 
 
Bon, déjà j'ai fait trois truc d'un coup....  :o
 
Edit : Quatre même....


Message édité par Profil supprimé le 25-09-2011 à 06:13:00

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  Organisation de projet.

 

Sujets relatifs
Projet, choix des outils et conseilsErreur de compilation, Projet ou bibliothèque introuvables
[RECH] Recherche une dizaine de webmasters pour tester projetCMS pour un projet
integrer une DLL ada dans un projet VisualC++ 2005Inclusion d'une dll dans un projet Qt
Projet de création de site web, vos conseils, vos avis...Aide projet Web - recherche d'associés
Logiciel de suivi de projet[projet site web] Quelle organisation suivre?
Plus de sujets relatifs à : Organisation de projet.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR