IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Communication PHP vers C++


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Communication PHP vers C++
    Bonjour à tous,

    Mon problème est simple, j'aimerais transmettre des variables d'un script php qui est sur un serveur web à mon application qui est en c++.

    Pour le sens contraire sa n'a pas été trop dur il suffisait d'envoyer une URL avec les variables C++ au script, mais la j'avoue que je bloque.

    J'ai penser à écrire les variable dans un fichier texte et le lire ensuite avec mon programme mais sa fait un peu bricolage et surtout c'est pas évident a gérer s'il il y a plusieurs accès simultané pour l'écriture de se fichier.

    Merci de votre aide

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par projetge2i Voir le message
    Bonjour à tous,.....
    Houla , une premiére précision, le PHP ne connait pas ton micro et ne sait qu'envoyer en réponse a tes requétes que des éléments HTML
    donc le HTML, du javascript feuilles de style etc ... , c 'est vrais qu'il peut uploader unélément de ton micro ... mais sécurité oblige c'est trés limité !

    Bien sur il serait facile en C de recevoir un paramétre genre lpCmdLine
    mais cela supposerait que ton micro accepte qu'un site web puisse lancer
    c:\truc\tonprog.exe parametre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int WINAPI WinMain   
    (               
      HINSTANCE hInstance,
      HINSTANCE hPrevInstance,
      PSTR lpCmdLine,
      int nCmdShow
    )

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Pour moi, le mieux est de passer par un socket...

    Créer un socket en écoute permanente sur ton appli en C, et lorsque ton script PHP veut communiquer, ouvrir le socket, envoyer tes data et fermer le socket.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Merci de vos réponse,
    mais j'ai oublié de préciser que ces transfert doivent etre totalement transparent pour l'utilisateur donc les firewall ne doive rien bloquer.
    C'est pourquoi il faut que je passe par le port 80 si possible.
    Je ne connait pas très bien les socket, estce qu'il le permette ?

    la commande lpcmdline ne me parait pas utilisable dans se cas car comme tu la dis les ordinateurs distant n'accepterais pas.

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par comode Voir le message
    Pour moi, le mieux est de passer par un socket...

    Créer un socket en écoute permanente sur ton appli en C, et lorsque ton script PHP veut communiquer, ouvrir le socket, envoyer tes data et fermer le socket.
    Désolé, aucun systéme ne peut créer une écoute même pas en TCP
    car il te faudrait un systéme genre courrier avec acusé reception
    donc un protocole UDP.

    Mais de quelle entitée vers quelle entitée ?? as tu déjas utilisé ces notions de dialogue ? j' en doute

    Tu crois qu'un micro peut attendre les ordres d'un site web ?? whaou gare aux virus

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Oui, les sockets permettent de passer par le port 80 sans aucune difficulté, mais il n'est évidemment pas possible d'ouvrir ce port si apache l'utilise déjà.

    Cependant, je ne sais pas exactement ce que tu veux faire, mais normalement, de ce que j'ai compris, en aucun cas tu attaques le socket depuis le poste de ton client, mais bien depuis ton serveur apache ! La communication entre apache<->appli C n'est donc pas censé poser de problème de firewall ou autre (surtout si le prog en C et apache sont sur la même machine). Tu peux alors ouvrir n'importe quel port pour communiquer, c'est totalement transparent pour le client. Garde bien a l'esprit que apache ne s'execute que sur ton server, JAMAIS chez le client !

    Dans cette optique, les sockets sont de loin la meilleure solution (mais aussi la plus simple)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Je ne comprend pas trop ta réponse comode, peut être que c'est moi qui me suis mal exprimé : mon script php est sur un serveur web et mon application en C++ est chez un client.
    Donc lors d'envoi de données du script vers l'application il y a bien un problème de firewall puisque des données rentre chez le client.

    merci de ton aide

  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par comode Voir le message
    Oui, les sockets permettent de passer par le port 80 sans aucune difficulté, mais il n'est évidemment pas possible d'ouvrir ce port si apache l'utilise déjà.

    Cependant, je ne sais pas exactement ce que tu veux faire, mais normalement, de ce que j'ai compris, en aucun cas tu attaques le socket depuis le poste de ton client, mais bien depuis ton serveur apache ! La communication entre apache<->appli C n'est donc pas censé poser de problème de firewall ou autre (surtout si le prog en C et apache sont sur la même machine). Tu peux alors ouvrir n'importe quel port pour communiquer, c'est totalement transparent pour le client. Garde bien a l'esprit que apache ne s'execute que sur ton server, JAMAIS chez le client !

    Dans cette optique, les sockets sont de loin la meilleure solution (mais aussi la plus simple)
    Alors ça mille fois OUI, avec toi,
    si le C est sur le serveur c' est plus du tout le même probléme !
    Je n'avais pas compris ça au départ

  9. #9
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Désolé, aucun systéme ne peut créer une écoute même pas en TCP
    car il te faudrait un systéme genre courrier avec acusé reception
    donc un protocole UDP.

    Mais de quelle entitée vers quelle entitée ?? as tu déjas utilisé ces notions de dialogue ? j' en doute

    Tu crois qu'un micro peut attendre les ordres d'un site web ?? whaou gare aux virus
    N'y vois aucune velléité, mais je ne suis pas du tout d'accord avec toi... Bien sur que tu peux ouvrir une connexion depuis apache sur une appli en C si y'a un socket à l'écoute... Car c'est bien ce qui est demandé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d'un script php qui est sur un serveur web à mon application qui est en c++
    Et ça serait pas le 1er fois que je le ferait ! Alors évidemment, il faut prendre garde à la sécurité (bien qu'un firewall soit plus que suffisant pour ce qui est de la sécurité si appliC et serveur web sont sur la même machine), mais techniquement, je ne vois pas le rapport avec l'usage d'UDP...

    Connexion TCP simple, socket simple, un script PHP qui fait un fsock et sans rentrer dans les considérations "quand est-ce qu'on envoi", c'est terminé...

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par comode Voir le message
    N'y vois aucune velléité, mais .......
    Oui oui nos messages se sont croisés

  11. #11
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    ok, fox, on c'était mal compris, et apparemment, je n'avais pas comrpis ce que voulait projetgei non plus :p

    Bon, la solution que je propose marche également très bien si tu mets ton appli en C chez le client a condition que ce dernier ne fasse tourner ni serveur web, ni skype (qui utilisent deja tout 2 le port 80) et que son routeur laisse passer le message...

    C'est a mettre chez tous les clients ?

    Dans tous les cas, aucun routeur ne laissera par defaut entrer une connexion sur la machine de ton client... C'est bien le principe du firewall : ça bloque ce qui rentre et n'est pas explicitement autorisé.

  12. #12
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par projetge2i Voir le message
    Je ne comprend pas trop ta réponse comode, peut être que c'est moi qui me suis mal exprimé : mon script php est sur un serveur web et mon application en C++ est chez un client.
    Donc lors d'envoi de données du script vers l'application il y a bien un problème de firewall puisque des données rentre chez le client.

    merci de ton aide
    Houlala !! on réponds trop vite, alors nous revoici avec ce que je craignais, le C est sur le micro client !!! pffffffff ... mission impossible !

  13. #13
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Houlala !! on réponds trop vite, alors nous revoici avec ce que je craignais, le C est sur le micro client !!! pffffffff ... mission impossible !
    Oui, là d'accord... à moins de faire 2 applis en C :p

    La version client qui ouvre la connexion vers une apli en C sur le serveur, que le firewall ne devrait pas bloquer (connexion sortante)... De cette façon, on peut ouvrir une connexion persistante entre le client et le serveur.

    La version serveur en C qui reçoit les connexions entrantes et qui fait le pont entre l'appli du client et le serveur Apache, et fonctionnant sur le principe que j'évoque plus haut (sauf qu'on reste connecté).

    Par contre, ça devient tout de suite moins simple lol !

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Oui l'application sera chez tous les client et c'est bien pour cela que l'utilisation du fichier texte est un peu délicate car il peut y avoir plusieurs connection simultanée.
    Et comme je l'ai deja dit il faut que ça demande aucune configuration de l'utilisateur.

    Je sais c'est compliqué

    merci à tous les 2

  15. #15
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Bon bhé cherche pas, la dernière solution que je propose est la seule qui puisse fonctionner, avec au pire l'éventualité qu'il faille "accepter" que la connexion sorte sur certains firewall du style de zonealarm (mais généralement, une popup apparait le proposant pour les connexions sortantes).

    Le gros du travail du coup se situe sur l'appli "intermédiaire" qui devra être capable de gérer une multitude de connexions, et donc d'utiliser des sémaphores (SELECT sur descripteurs de fichier en C). Tu ne pourras cependant pas faire cohabiter apache et l'appli intermédiaire si tu veux qu'ils soient tout 2 sur port 80 et sur le même serveur... Mais comme je dit, c'est pas un très gros problème tant que c'est le client qui établi la connexion.

  16. #16
    FoxLeRenard
    Invité(e)
    Par défaut
    Il me semble dans mes souvenirs que javascript sait mettre du texte dans le presse-papier

    Alors la par contre le C sait trés bien récupérer ça non ?

    Je réédites car j'ais troucé ça pret a l'emploie sur le web

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    <html>
    <body>
    <script language="javascript">
    function retournepressepapier()
    {
    return window.clipboardData.getData("Text");
    } 
     
    function copiedanspressepapier()
    {
    window.clipboardData.setData("Text",formulaire.zone_de_copier.value);
    }
     
    </script>
     
    <form name="formulaire">
    <input type="text" name="zone_de_coller"> 
    <input type="button" value="Coller" onclick="formulaire.zone_de_coller.value = retournepressepapier();">
    <input type="text" name="zone_de_copier"> 
    <input type="button" value="copier" onclick="copiedanspressepapier();">
    </form>
     
    </body>
    </html>
    Dernière modification par FoxLeRenard ; 22/04/2009 à 15h59.

  17. #17
    FoxLeRenard
    Invité(e)
    Par défaut
    Oui je précises que si je mets ça sur mon site, et que l'un de vous va sur mon html ... le copier sera bien dans la mémoire sur votre micro, et donc récupérable par un C de votre micro !

    En C on recupére genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    char * buffer;
    if(OpenClipboard()) buffer = (char*)GetClipboardData(CF_TEXT);
    CloseClipboard();
    Dernière modification par FoxLeRenard ; 22/04/2009 à 16h15.

  18. #18
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Mmmh

    Si tu appelle une url pour envoyer des infos à PHP, pourquoi ne pas faire la même chose pour les récupérer ?

    Par exemple tu appelle une url qui va renvoyer les données que tu cherches à récupérer et qui renverra une chaine du genre var1|var2|var3|... ou encore mieux un xml.

    Je suppose que si tu peux appeler une url en C tu dois aussi pouvoir récupérer le contenu de celle ci.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  19. #19
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    Mmmh
    Si tu appelle une url pour envoyer des infos à PHP, pourquoi ne pas faire la même chose pour les récupérer ?
    Par exemple tu appelle une url qui va renvoyer les données que tu cherches à récupérer et qui renverra une chaine du genre var1|var2|var3|... ou encore mieux un xml.
    Je suppose que si tu peux appeler une url en C tu dois aussi pouvoir récupérer le contenu de celle ci.
    Non l'Ami, tu verras ça a été expliqué,
    le programme C présent chez tout les clients de cette sociétée, sur leurs micros peuvent bien sur passer des paramétres a un PHP situé sur le WEB de la sociétée, mais linverse non !! bien sur le PHP n'ayant aucune action possible sur le visiteur heureusement !

  20. #20
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Il parrait que le PHP 5.3 intègre désormais un garbage collector en plus de la gestion des connexion persistante qui marche déjà :p

    Enfin moi, je dit ça, je dit rien ^^

Discussions similaires

  1. [PHP-JS] Communication Javascript vers PHP
    Par wwave dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/02/2006, 17h50
  2. Réponses: 3
    Dernier message: 15/11/2005, 10h07
  3. Communication Javascript vers Flash
    Par wwave dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/11/2005, 10h00
  4. Composants communs entre Ver Entreprise et Professionnelle
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/03/2004, 13h07
  5. Communication dll vers application
    Par portu dans le forum Langage
    Réponses: 8
    Dernier message: 27/02/2004, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo