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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Sockets Linux en C - serveur d'applications

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sockets Linux en C - serveur d'applications

n°1359157
roswellent​ongues
Posté le 03-06-2014 à 20:11:51  profilanswer
 

Bonjour,
Je ne suis peut-être pas dans la bonne section du forum (j'ai hésité avec la partie programmation). Si erreur il y a, je m'en excuse.  
 
Dans le cadre d'une formation, je dois réaliser un petit serveur d'application qui va me permettre de faire 2 choses : déterminer si le nombre envoyé par le client est un nombre premier, ou bien de calculer l'aire et la circonférence d'un cercle avec le rayon envoyé par le client.  
 
Côté "algorithmique", j'ai déjà les calculs de faits :

Code :
  1. pour le calcul de nombre premier ou non
  2. int main (void)
  3. {
  4.   int i, nb, test;
  5.   test  = 0;
  6.   printf ("Entrez un nombre entier : " );
  7.   if (scanf ("%d", &nb) != 1)
  8.     return -1;
  9.   for (i = 2; i < nb; i++, compter++)
  10.     if (nb % i == 0)
  11.       test = 1;
  12.   if (!test)
  13.     printf ("%d nombre premier \n", nb);
  14.   else
  15.     printf ("%d n'est pas nombre premier\n", nb);
  16.   return 0;
  17. }


 
J'ai pu créer un serveur et un client qui se voient et discutent (testé en envoyant une chaîne de caractères depuis le client qu'on récupère côté serveur avant de la renvoyer sur le client). Maintenant, j'aimerais pouvoir envoyer une opérande (p pour premier et c pour cercle).
Pour cela, je pensais passer par une structure :  
 
fichier request.h

Code :
  1. #ifndef REQUEST_H_
  2. #define REQUEST_H_
  3. //structure requete
  4. struct Request {
  5. int operande1;
  6. char operateur;
  7.   };
  8. typedef struct Request Request;
  9. // structure reponse
  10. struct Response {
  11. float result;
  12.  };
  13. typedef struct Response Response;
  14. #endif /* REQUEST_H_ */


 
Mon client (la partie application en elle-même, la connexion fonctionne) :

Code :
  1. int main (int argc, char * argv[]) {
  2. struct sockaddr_in adresse;
  3. int    sock;
  4. int    nb_lus;
  5. Request operationDemande;
  6. Response resultat;
  7. //... ok jusque là, partie connexion serveur ok
  8. while (1) {
  9.  printf("Opération à effectuer : " );
  10.  if (write(sock, & (operationDemande.operande1), sizeof(Request)) < 0) {
  11.   perror("write" );
  12.   break;
  13.  }
  14.  if (nb_lus = read(sock, & (operationDemande.operande1), sizeof(Request))== 0)
  15.   break;
  16.  if (nb_lus < 0) {
  17.   perror("read" );
  18.   break;
  19.  }
  20.  printf("Résultat : " );
  21. }
  22. return EXIT_SUCCESS;
  23. }


 
Et côté serveur - partie appli

Code :
  1. void traitement_connexion (int sock) {
  2. int longueur;
  3. Request operationDemande;
  4. Response resultat;
  5. while (1) {
  6.  longueur = read(sock, &(operationDemande.operande1),sizeof(Request));
  7.  if (longueur < 0) {
  8.   perror("read" );
  9.   exit(EXIT_SUCCESS);
  10.   }
  11.  if (longueur == 0)
  12.    break;
  13.   
  14.   printf("recu : %d\n", operationDemande.operande1);
  15.   fflush(stdout);
  16.   write(sock,&(operationDemande.operande1),sizeof(Request));
  17.  }
  18.  close(sock);
  19. }


 
Je ne vois pas trop comment y parvenir. L'idée serait de faire sur le shell du client, une fois la connexion établie quelque chose du style :  
$ p 5  
et en retour :
$ 5 est un nombre premier
 
Toute aide serait utile,  
Merci d'avance

mood
Publicité
Posté le 03-06-2014 à 20:11:51  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Sockets Linux en C - serveur d'applications

 

Sujets relatifs
Débutant sur Linux : problème avec G-PartedQuel serveur email sécurisé ?
Serveur LAMP avec virtualhosts et FTPTout à planter chez mon Linux.
réveil matin sous linux (Fedora)Accès a une clé USB a partir d'un serveur sous freenas
probleme dns sur serveur dedie (named.conf) restoration posssible ?Radeon HD 5450 VS GeForce 210 pour Media center XBMC Linux
Meilleur distribution Linux pour anciens ordiScript pour auditer 70 serveurs Linux
Plus de sujets relatifs à : Sockets Linux en C - serveur d'applications


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