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

  FORUM HardWare.fr
  Programmation
  C

  [Débutant] Socket en C + interaction avec du PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Débutant] Socket en C + interaction avec du PHP

n°737907
la buvette
$í j'ø$âí$
Posté le 25-05-2004 à 15:28:52  profilanswer
 

Bonjour,
 
Je suis une vrai bille en C, et je dois créer une application client/serveur en C sous Unix. Cette application doit communiquer avec une base de donnée MySql.
 
L'application pourrait très bien tourner toute seule avec des pages en PHP, mais je suis obligé dans mon projet d'utiliser les socket en C.
 
Qu'est-il mieux/plus facile de faire pour respecter mes contraintes:
_ programmer toute l'application en C (mais c'est plus facile d'utiliser des pages PHP car on peut utiliser des menus déroulants, des boutons radio, etc...) ?
_ programmer la majeure partie du programme en PHP et gérer les transferts par socket en C ? c'est possible ça ? (par exemple après validation d'un formulaire HTML/PHP à partir d'un client, le programme C sur le serveur avec les sockets gère le transfert des données, ou, tout du moins, va rediriger le client vers une autre page HTML/PHP qui enregistrera ces données si c'est possible). Il faudrait donc que le programme C du serveur communique avec la fenêtre Mozilla du client...
 
De plus, je suis complètement perdu avec les sockets. J'ai testé plusieurs programmes trouvés sur le net, des trucs touts simples du genre "envoi d'un hello world" du client vers le serveur, mais ça ne fonctionne jamais  :cry:  
Et si j'ai bien compris, si on a deux programmes en C, on peut ouvrir une fenêtre Terminal sous Unix qui exécute le serveur, une autre fenêtre Terminal qui exécute le client, et ces programmes pourront communiquer entre eux ?  
 
Bref, je suis largué  :cry:

mood
Publicité
Posté le 25-05-2004 à 15:28:52  profilanswer
 

n°738006
syntax
Posté le 25-05-2004 à 16:15:34  profilanswer
 

Ca m'a l'air un peu tordu ton idée de php.
Procures toi la libmysql et commence par des choses tres simples (récupérer une donnée dans une table, ...)

n°738016
la buvette
$í j'ø$âí$
Posté le 25-05-2004 à 16:19:42  profilanswer
 

OK. Mais avec cette lib, on peut faire afficher des données venant de Mysql dans un programme C, mais le C c'est difficilement exploitable avec des données de bases de données. Je préférerai utiliser du PHP pour la mise en forme. Y-a-t'il moyen à partir du C de "balancer" les données récupérées de Mysql à une page internet, ou alors à partir du C de forcer un client à exécuter une page en PHP ?

n°738024
la buvette
$í j'ø$âí$
Posté le 25-05-2004 à 16:23:54  profilanswer
 

Elle s'appelle comment exactement la librairie pour mysql que je la cherche ?
Merci :hello:

n°738028
syntax
Posté le 25-05-2004 à 16:24:51  profilanswer
 

ben le C sera ton client mysql. Si tu veux faire du php, tu auras un client web et plus de C. Ca change les donnees de l'exercice. Au sujet d'une solution intermediaire C+php, je ne vois pas trop l'interet ni comment faire...

n°738034
syntax
Posté le 25-05-2004 à 16:26:58  profilanswer
 

libmysql #?^@! :na:

n°738040
la buvette
$í j'ø$âí$
Posté le 25-05-2004 à 16:27:45  profilanswer
 

Je pense que je vais faire la 1ere solution, c'est beaucoup plus simple, avec des socket sur le port 3306 pour Mysql. Par contre je vais en chier pour la mise en forme des données: je veux faire des menus déroulants :cry:


Message édité par la buvette le 25-05-2004 à 16:28:28
n°738044
la buvette
$í j'ø$âí$
Posté le 25-05-2004 à 16:28:46  profilanswer
 

merci syntax pour la lib, je vais chercher

n°738049
MrNavarro
Posté le 25-05-2004 à 16:29:23  profilanswer
 

Aucune idee si c'est possible de faire communiquer le C et PHP, Honnetement, je pense pas (pour des raisons de securite). En tout cas, pour ta question sur les fenetre, oui, tu peu executer le serveur dans une console et comuniquer avec lui a travers une autre, c'est le role du port de connection. pour tes exmeple recuperer du net, essaie d'enlever les printf. Generalement c'est eux qui font planter l'affaire. Si ca marche toujours pas, j'ai un code assez simple avec un fork. Voila, slut

n°740615
Deaddy
Posté le 26-05-2004 à 19:35:48  profilanswer
 

biensur c'est possible, par ex:
 
server en c:

Code :
  1. #include <stdio.h>
  2. #include <sys/socket.h>
  3. #include <netdb.h>
  4. #include <unistd.h>
  5. #include <stdlib.h>   
  6. #include <string.h>
  7. main(int argc, char * argv[])
  8. {
  9. struct sockaddr_in addr,from;
  10. struct hostent *iptemp;
  11. socklen_t len=sizeof(addr);
  12. char buff[3000];
  13. int s,n,conn,sockop=1;
  14.         if (argc<2) {printf("USAGE: %s <port d'ecoute> [<ip locale>]\n",argv[0]);exit(-
  15. 1);}
  16.         if (argc==3)
  17.         {
  18.                 iptemp=gethostbyname(argv[2]);
  19.                 addr.sin_addr=*(struct in_addr*)iptemp->h_addr;
  20.         }
  21.         else addr.sin_addr.s_addr=INADDR_ANY;
  22.         addr.sin_family=AF_INET;
  23.         addr.sin_port=htons(atoi(argv[1]));
  24.         if((s=socket(PF_INET,SOCK_STREAM,0))<1) {perror("Socket" );exit(-1);}
  25.         setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&sockop,sizeof(sockop));
  26.         if (bind(s,(sockaddr *)&addr,len)<0) {perror("Bind" );exit(-1);}
  27.         if (listen(s,4)<0) {perror("listen impossible" );exit(-1);}
  28.         conn=accept(s,(sockaddr*)&from,&len);           // accepte connexion
  29.         n=read(conn,buff,3000);
  30.         printf("recu %d octets :%s\n",n,buff);
  31.         strcpy(buff,"salut" );
  32.         write(conn,buff,6);
  33.         shutdown(conn,2);
  34.         close(conn);
  35.         shutdown(s,2);
  36.         close(s);
  37. }


 
en le client php:

Code :
  1. <?php
  2. $sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
  3. socket_connect($sock,"www.chezmoi.org",2210);
  4. socket_write($sock,"bonjour",7);
  5. $buff=socket_read($sock,50,0);
  6. socket_close($sock);
  7. echo $buff;
  8. ?>

mood
Publicité
Posté le 26-05-2004 à 19:35:48  profilanswer
 

n°741181
MrNavarro
Posté le 27-05-2004 à 10:50:55  profilanswer
 

Ah bah c'est cool ca merci pour l'info

n°743122
syntax
Posté le 28-05-2004 à 13:01:03  profilanswer
 

et il est ou le mysql ??


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

  [Débutant] Socket en C + interaction avec du PHP

 

Sujets relatifs
[Php/Mysql/Tableaux] Optimisation d'un codeDoc PHP problème [Résolu]
Moteur de recherche en PHP surun DOC XML[PHP] Forward declaration ?
[PHP] Chercher un caractère dans une chaine... Quel fonction ?Générer un fichier xml à partir d'un xsd via php ?
PRoblème de config PHPcontenu réel d'un fichier texte ou exe [debutant]
probleme de stockage de socket[PHP] - Décomposer les chiffres d'une année (-> résolu <-)
Plus de sujets relatifs à : [Débutant] Socket en C + interaction avec du PHP


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