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

Web & réseau Delphi Discussion :

Client serveur TCP


Sujet :

Web & réseau Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut Client serveur TCP
    Bonjour a tous
    J'ai un client et un serveur TCP, qui fonctionne en local. J'utilise les composant indy idtcpclient et Idtcpserveur. Je me suis inspirer de l'exemple contenu dans le Livre delphi 7 studio. Je souhaiterai faire communiquer mon serveur et mon client via internet, et non plu en local, seulement je n'y arrive pas. j'ai essayer de remplacer les adresses IP locales par les adresses IP internet mais ça ne fonctionne pas ... Si vous pouvez m'aider, n'hésités pas
    Merci
    a+

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    très bon bouquin

    tu devrais avoir des réponses ici
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    Merci, ton site est vraiment bien pour les première explications.
    Simplement cette idée de "configurer le rooteur" me dérange. Ce n'est pas très ergonomique. Des applications commme MSN, ne demande pas de tel manipulations délicate.
    J'ai déja fais communiquer deux applications par internet : une envoyait des mails avec des instruction et l'autre consultait les mails et agissait en fonction. Mais c'est beaucoup trop lent, et pas très propre.
    N'y a til pas moyen de faire deux application en liaisons sans configurer le rooteur ? peut etre dois je utiliser une page Web ? je n'y connais pas grand chose; merci de votre attention et de vos réponces
    a+

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Les adresses locales c'est exactement comme quand tu as un poste téléphonique derrière un standard.

    d'une entreprise à l'autre, les numéros de postes ne fonctionnent pas ! tu es obligé d'utiliser une ligne extérieure. Si tu n'as pas de ligne directe, tu ne peux pas être appeler.
    Sur certains standards téléphoniques il est cependant possible de configurer des numéros à plus de 10 chiffres pour atteindre directement un correspondant interne...ben c'est pareil avec les routeur et les numéros de ports

    Dans le cas de MSN c'est différent, les deux clients se connectent sur un serveur public qui fait le lien entre les deux.

    Je prend aussi souvent comme exemple eMule (eDonkey & cie), la notion de "LowID" est directement liée aux adresses privées. Si deux clients P2P sont tous les deux avec des adresses locales, il leur est impossible d'établir une liaison directe P2P...c'est le serveur eDonkey qui est contraint de faire suivre les paquets de l'un vers l'autre. Cette surcharge de bande passante est la raison pour laquelle la plupart des serveurs P2P refusent se mode de connexion. Il reste possible de travailler en LowID à condition de ne communiquer qu'avec des clients "HighID" et d'être à l'initiative de toutes les connexions.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut AHAHAH !
    j'en étais sur !!!

    depuis que j'ai travaillé sur le protocole SIP, je me suis dit qu'il fallait que je teste quelque chose qui devrait fonctionner...Comme ça fait un bout de temps que je n'ai pas trouvé le temps de le faire, je me suis dit que quelqu'un avant moi devait déjà y avoir penser...et google me l'a confirmé

    SIP est une protocole UDP qui permet de mettre en place une conversation RTP (toujours en UDP) avec un correspondant.

    Mon softphone SIPInside ne fonctionne pas sur toutes les configurations, et souvent on me demande s'il ne faut pas configurer le routeur pour recevoir le flux audio quand on est derrière un routeur. La réponse est non, car bien qu'UDP soit un mode "non connecté", le routeur accepte les réponses du serveur car il fait automatiquement le lien avec les paquets que le client à envoyé (paire IP, port). Comme le softphone est toujours le premier à envoyer des paquets UDP, le routeur lui retourne automatique les paquets du serveur correspondant.

    Et là je me suis dit, il y a quelque chose à faire ! Pour qu'un PC sur le net puisse me parler, il faudrait simplement qu'il m'envoie des paquets UDP sous la forme de ceux que m'envoie le serveur vocal dans SIP/RTP alors que moi même je balance des trames de tel sorte que mon routeur pense que le client est simplement en train de me répondre !

    Plus fort, en jouant sur nos adresses publiques respectivent (qu'il nous faudrait connaitre par un biais quelconque) deux PC avec des adresses privés devraient pouvoir communiquer en UDP pour peu qu'ils se mettent d'accord sur les numéros de port à utiliser !

    Comme les *Box proposent de plus en plus des adresses IP fixes, ça ne devrait pas être très compliqué d'établir se lien finalement.

    Or donc, je me disais que je ne devais pas être le seul à avoir pensé à ça, et la réalité est encore plus belle puisqu'il est envisageable de faire de même avec des connexions TCP !

    mon ami Google vient de me trouver un site qui explique tout cela en détail mais en anglais, c'est le UDP Hole Punching !

    Notez au passage le petit texte qui précède de l'article

    "J'fais des trous, des petits trous...
    toujours des petits trous
    - S. Gainsbourg"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    Merci beaucoup pour tes réponces.
    J'ai bien compris ton image avec les téléphones.
    Donc on ne peux pas avoir accès à un ordinateur derriere un freebox a moins de l'alors configurer spécialement pour.

    Tu dis : "Dans le cas de MSN c'est différent, les deux clients se connectent sur un serveur public qui fait le lien entre les deux." le serveur ça peut etre quoi ? une page web ?
    Mais une page Web ne rencontre pas les meme difficultées ?

    Ensuite je dois reconnaitre quej'ai un peu de mal a te suivre dans ton deuzieme post. En gros tu dis que se serais quand meme possible de faire une ligne direct a travers le routeur ?
    Je n'arrive pas a ouvrir ton lien ...
    Enfin merci beaucoup de ton aide.

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par pieroznight Voir le message
    Tu dis : "Dans le cas de MSN c'est différent, les deux clients se connectent sur un serveur public qui fait le lien entre les deux." le serveur ça peut etre quoi ? une page web ?
    Mais une page Web ne rencontre pas les meme difficultées ?
    ben le pb c'est que le serveur Web c'est qu'il traite les différentes sessions séparement.

    avec MSN, tu te connectes sur le serveur, il te donne la liste de tes correspondant avec leur état de connexion. Il peux t'informer dès qu'un de tes contact se connecte car ta connexion vers MSN est permante et bidirectionnelle. Tu envoies de commandes il t'en envoies etc... Dans le cas d'une page web, tu as une requête qui te retourne une réponse. Le serveur ne sera jamais à l'initiative de la connexion ou même du dialogue. Il ne fait que répondre à tes requêtes ce qui amène à gérer des requêtes régulières et des temps d'échange un peu pénible. Exactement comme le font les sites web...on recharge la page de temps en temps pour mettre à jour les infos (c'est un peu moins lourd avec Web 2.0 = AJAX, mais le principe reste le même).

    Citation Envoyé par pieroznight Voir le message
    Ensuite je dois reconnaitre quej'ai un peu de mal a te suivre dans ton deuzieme post. En gros tu dis que se serais quand meme possible de faire une ligne direct a travers le routeur ?
    Je n'arrive pas a ouvrir ton lien ...
    Enfin merci beaucoup de ton aide.
    Oui, mais c'est pas tout simple et ça nécessite tout de même un serveur distant

    l'idée est la suivante :

    je suis un PC local (10.0.0.1) j'ouvre un port local (4321) pour envoyer un paquet UDP vers un serveur public (18.181.0.31) sur un port donné (1234).

    comme je passe par un routeur il va envoyé la requête au serveur avec son adresse IP (155.99.25.11) sur un port à lui (62000) qu'il associe à ma requête.

    on a donc
    [10.0.0.1:4321===>===[155.99.25.11:62000]--->---[18.181.0.31:1234]

    depuis un autre PC on va faire la même chose...vers le même serveur
    [10.1.1.3:4321]===>===[138.76.29.7:31000]--->---[18.181.0.31:1234]

    comme le serveur voit arriver les adresses IP et n° de port des routeurs, il peut les retourner aux clients :il envoie a chaque client un paquet contenant l'adresse de l'autre client. Pour cela il envoie des paquets UDP vers les adressses/port des routeurs qui feront suivre aux adresses internes

    [18.181.0.31:1234]--->---[155.99.25.11:62000]===>===[10.0.0.1:4321]
    [18.181.0.31:1234]--->---[138.76.29.7:31000]===>===[10.1.1.3:4321]

    en effet chaque routeur a gardé en mémoire l'association entre le numéro de port (31000 et 62000) et un PC interne (10.1.1.3:4321 et 10.0.0.1:4321), et il considère le paquet entrant comme une réponse à celui qu'il a émis.

    dès lors les clients pourront croiser les adresses et communiquer directement entre eux en envoyant leurs paquets vers l'adresse/port du router de l'autre
    [10.0.0.1:4321]===>===[155.99.25.11:62000]--->---[138.76.29.7:31000]===>===[10.1.1.3:4321]
    [10.1.1.3:4321]===>===[138.76.29.7:31000]--->---[155.99.25.11:62000]===>===[10.0.0.1:4321]
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    mon objectif, c'est juste de faire un serveur sur un pc qui execute une commande que j'envoi par mon client. je n'ai pas besoin de réponse du serveur (pour le moment). une page web pourrai donc convenir ?

    C'est le serveur qui lit la page web ou c'est la page web qui informe le serveur (et déclenche un evenement)?
    Et comment le client met a jour la page web ? avec quelle vitesse ?

    D'après tes shémas, il ne serait pas possible de faire les clients serveurs qui communiquent directement si on leur donnent l'IPpublic du routeur et celle du PC derriere (ou son port) ?
    excuses moi si j'ai du mal a comprendre ^^
    merci beaucoup

  9. #9
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par pieroznight Voir le message
    mon objectif, c'est juste de faire un serveur sur un pc qui execute une commande que j'envoi par mon client. je n'ai pas besoin de réponse du serveur (pour le moment). une page web pourrai donc convenir ?
    oui, tu pourrais "déposer" un ordre sur le server web, et le ton server viendrais périodiquement relever les nouveaux ordres.

    Citation Envoyé par pieroznight Voir le message
    C'est le serveur qui lit la page web ou c'est la page web qui informe le serveur (et déclenche un evenement)?
    Et comment le client met a jour la page web ? avec quelle vitesse ?
    ça dépend uniquement de tes besoins ça

    Citation Envoyé par pieroznight Voir le message
    D'après tes shémas, il ne serait pas possible de faire les clients serveurs qui communiquent directement si on leur donnent l'IPpublic du routeur et celle du PC derriere (ou son port) ?
    excuses moi si j'ai du mal a comprendre ^^
    merci beaucoup
    non, le routeur n'a pas connaissance des adresses IP des postes internet ni des ports qu'ils utilisent. La seule adresse IP utilisable est l'adresse IP publique du routeur. Et le seul port utilisable est celui que le routeur reconnait comme étant une porte d'entrée vers le client : soit parce qu'il a lui même fait cette association à cause d'une requête sortante du client, soit parce qu'il a été configurer pour réagir comme ça.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    Bon, alors je vais essayer de faire cummuniqué mes applications par page web.

    Javais déja fais quelque chose de similaire avec des application qui s'envoyaient des mails, mais c'est trop lent.

    le seul probleme c'est que je n'ai absolument aucune idée de comment m'y prendre ...aurait tu des exemples (de code et de structure) et aussi avec quel langage dois je programmer la page web. (javascript, php ?)

    J'espere que je vais réussir, je suis loin d'etre un pro et je n'ai jamais utilisé autre chose que Delphi
    encore merci

  11. #11
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par pieroznight Voir le message
    Bon, alors je vais essayer de faire cummuniqué mes applications par page web.

    Javais déja fais quelque chose de similaire avec des application qui s'envoyaient des mails, mais c'est trop lent.
    avec les mails il y a une donnée que tu ne maitrises pas, c'est le temps que mettrons les serveurs SMTP pour s'échanger les mails. En web se problème disparait !

    Citation Envoyé par pieroznight Voir le message
    le seul probleme c'est que je n'ai absolument aucune idée de comment m'y prendre ...aurait tu des exemples (de code et de structure) et aussi avec quel langage dois je programmer la page web. (javascript, php ?)
    déjà ça dépend du serveur que tu vas utiliser mais je paris sur PHP

    note que Javascript s'execute localement dans le navigateur et non sur le serveur

    Citation Envoyé par pieroznight Voir le message
    J'espere que je vais réussir, je suis loin d'etre un pro et je n'ai jamais utilisé autre chose que Delphi
    encore merci
    PHP c'est tout bête si tu connais déjà la programmation !
    passer de Delphi à PHP c'est un peu comme tu fais du Pascal et du C, tu te fais avoir à chaque fois sur le "=" et "==" au lieu du ":=" et "="

    tient, voila un bout de code que j'ai failli utiliser y'a quelques temps dans un cas très similaire

    Code php : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?
    // adresse IP du client Delphi
     $addr=$_SERVER['REMOTE_ADDR'];
    // il nous invoque avec un n° de port en paramètre : script.php?1234
     $port=(int)$_SERVER['QUERY_STRING'];
    // par défaut on prend 2048
     if (!$port) $port=2048;
    // ici je voulais demander l'ouverture du port en question
    // pour cela il faut une adresse IP publique
     $self=fsockopen($addr,$port,$errno, $errstr, 30);
     if (!$self) {
      echo 'Accès impossible';
      exit;
     }
    // le nom du client
     $name=$addr.':'.$port;
    // recherche des clients déjà connetés 
    // équivalent du FindFirst/FindNext de Delphi
     $dir=opendir('.');
     while ($file=readdir($dir)) {
      if (substr($file,0,4)=='client_') { // fichier client
     // le nom du fichier contient l'adresse et le n°de port
       $client=explode('_',$file); // client_addr_port
     // connection vers le client
       $sock=fsockopen($client[1],$client[2],$errno, $errstr, 30);
       if (!$sock) {
      // impossible, le client n'existe plus
        unlink($file);
       } else {
      // sinon lui envoyer l'adresse du client qui fait la requête
        fwrite($sock,chr(strlen($name)).$name);
        fclose($sock);
      // et informer le requêteur également :)
        $client=$client[1].':'.$client[2];
        fwrite($self,chr(strlen($client)).$client);
       }
      }
     }
    // fini on enregistre le fichier pour ce client
     if ($f=fopen('client_'.$addr.'_'.$port,'w')) {
      fwrite($f,date('dmYHi'));
      fclose($f);
     }
     
     fclose($self);
     
     echo '(c)2005 by Paul TOTH';
     
    ?>
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    Merci, j'y vois plus clair maintenant, même si j'arrive tout juste à lire le code...
    Donc si j'ai bien compris ce code php fait le transit des infos entre le client et le serveur.
    Mais comment le le client fait pour se "connecter" à la page web ? et combien d'argument je dois lui transmettre ?
    j'imagine qu'il faut l'IP internet du serveur, l'information à transmettre, et peut être l'IP internet du client ? Merci
    en attendant je vais chercher un tuto sur le php ...

  13. #13
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par pieroznight Voir le message
    Merci, j'y vois plus clair maintenant, même si j'arrive tout juste à lire le code...
    Donc si j'ai bien compris ce code php fait le transit des infos entre le client et le serveur.
    Mais comment le le client fait pour se "connecter" à la page web ? et combien d'argument je dois lui transmettre ?
    j'imagine qu'il faut l'IP internet du serveur, l'information à transmettre, et peut être l'IP internet du client ? Merci
    en attendant je vais chercher un tuto sur le php ...
    ou la ! ben pour interroger un serveur Web faut faire une requête HTTP.
    sur mon site tu trouves ce qu'il faut, sinon dans ICS, Indy & cie y'a tout ce qu'il faut

    pour ce qui est des paramètres c'est à toi de les définirs

    tu peux aussi regarder mon tuto sur les CGI qui à défaut de parler de PHP te permettra peut-être de mieux comprendre comme fonctionne un serveur Web le script PHP que je t'ai donné regarde la QUERY_STRING (qu'on trouve dans $_SERVER['QUERY_STRING']) tout comme le fait un CGI.

    sinon quelques petites choses sur PHP qui te permettrons de mieux comprendre le source :

    les variables sont toutes préfixées par un "$" et ne sont pas typées

    il existe des tableaux prédéfinis commençant par "$_" comme $_SERVER $_GET, $_POST ou $_COOKIE
    la syntaxe est plus proche de c/javascript
    tu as des {} pour les begin/end

    le "if i=0 then ...;" s'écrit "if (i==0) ...;" TRES IMPORTANT ! car les deux syntaxes sont valides, mais "(i=0)" donne la valeur 0 à i et ensuite teste si i<>0 ce qui n'arrive donc jamais

    il est possible d'écrire des choses comme "a=b=c=0;" pour tout mettre à 0
    et même "if ((i=j/512)>0) then echo i;" qui affecte une valeur à j et la teste en même temps
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    merci beaucoup, je vais essayer de faire des requetes http...
    la "QUERY_STRING ", c'est 'linformation qu'on envoi ?
    eh bien merci, je vais regarder tout ça c'est vraiment simpa que tu m'aides !!!

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    OK alors j'ai téléchargé ton composant HTTPQuery, et il a l'air assez simple d'utilisation. je commence un peu a comprendre. par contre dans l'exe qui est avec quand je fais get ou post je ne vois rien.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    Voila !!! j'ai appris le PHP !
    ce qui me pousse à pauser encore quelques questions :
    Est ce qu'on peut faire passé une image par une requete http
    (et la lire par $_POST) ?
    comment une application "lit" une variable sur une page web ( en gros l'inverse de la requete http merci !!!!!!

  17. #17
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    on va sortir du thème du forum, et il y a une rubrique PHP sur developpez

    mais pour ton info, les fichiers c'est dans $_FILE, mais il faut encoder un peu particulièrement les données du POST (enctype="multipart/form-data").

    si je comprend bien la deuxième partie de ta question... par exemple ton PHP fait ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?
     Header('Content-type: text/plain');
     // début des traitements
     // ... ici on détermine une valeur  pour la variable $toto
     // fin des traitements
     echo "toto=$toto";
    ?>

    ton client va recevoir des données au format texte qui contiendrons "toto=XXX" où XXX est la valeur de $toto dans ton script PHP.

    Il t'appartient de définir le format de ta réponse qui n'est donc pas forcément une page HTML...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    encore bonjour !
    puis je te demander quelques excplication au sujet de ton composant HTTPQuery. je n'arrive pas a l'utiliser. une fois que je post, je réactualise ma page php mais ça ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HTTPQuery1.URL:='http://127.0.0.1/cible.php';
     HTTPQuery1.Action:=qmPOST; 
     HTTPQuery1.Params.Values['prenom']:='pieroznight';
     
     Memo1.Lines.Text:=HTTPQuery1.Submit;
    voila, dans le memo j'ai le bon résultat, mais c'est dans ma page que je le voudrais.
    où est mon erreur ? (j'utilise easyPHP)
    merci

  19. #19
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je ne comprend pas ce que tu dis

    qu'est ce que tu as dans Memo1 ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut
    eh bien dans ma page j'ai un script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <p>
    <?php 
     if (isset ($_POST['prenom']))
     
    echo $_POST['prenom']; 
     
    ?> !</p>
    et dans le mémo apparait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p>pieroznight !</p>
    donc la valeur est bien remplacée.
    mais quand je visionne ma page par internet exploreur la valeur ne s'affiche pas
    ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Aide Client/Serveur TCP //Commentaire
    Par sebounty dans le forum Réseau
    Réponses: 1
    Dernier message: 27/04/2007, 09h19
  2. [Reseau] probleme client/serveur TCP LInux
    Par jmjmjm dans le forum Réseau
    Réponses: 20
    Dernier message: 03/12/2006, 19h32
  3. [C#] Problème client-serveur TCP
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/06/2006, 16h23
  4. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  5. client/serveur tcp/ip en c sous unix
    Par oclone dans le forum Développement
    Réponses: 8
    Dernier message: 19/04/2005, 18h55

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