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

 Delphi Discussion :

Communication TCP D5/D11


Sujet :

Delphi

  1. #1
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 378
    Points
    11 378
    Billets dans le blog
    6
    Par défaut Communication TCP D5/D11
    Bonjour,

    Je voudrais faire communiquer une appli D5 avec une appli D11 sur le même poste, la première envoyant des données et attendant en retour un résultat de calcul.

    Il suffit qu'elles échangent un record de petite taille et données simples à l'aller comme au retour.

    J'ai pensé au Client/Server-Sockets et SendBuf, mais je ne trouve pas le composant dans D11...

    Je pourrais envisager Indy, mais c'est une usine à gaz en comparaison !

    Merci pour vos pistes.

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 506
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    10
    Par défaut
    Les composants TserverSocket et TclientSocket ne sont pas présent par défaut. Ils doivent être installés
    Selectionner Composant > Installer des Packages puis
    Ajouter. Le package se trouve dans le repertoire bin de l'installation de Delphi. C'est un fichier dont le nom commence par dclsockets et qui a pour extenssion bpl.
    Je l'utilise actuellement dans le développement d'un driver modbus. Si tu as besoin d'exemple ...

    dclsockets280.bpl
    dans
    C:\Program Files (x86)\Embarcadero\Studio\22.0\bin

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 378
    Points
    11 378
    Billets dans le blog
    6
    Par défaut
    Top, merci beaucoup !

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 665
    Points : 25 462
    Points
    25 462
    Par défaut
    Tu n'as pas besoin de les installer non plus, ça c'est pour une utilisation en mode RAD où l'on pose les composants sur un DataModule, tu peux les instancier manuellement, ce que je recommande, ce que je fais depuis 2007 lorsque je suis passé à C++Builder
    J'utilise sinon ce composant depuis 2006 lui-même basé sur un code 2002 : TSLTRemoteMessenger , cela gère en Thread et non en Message le TServerSocket et pas besoin d'installation du package.
    Ce code a évolué au fil des versions, je ne sais pas si il est encore compatible D7 (a priori oui en dehors de quelques fiortures sur private et const)

    Pense que le TServerSocket de D5 n'est pas le même que celui de D11, il y a eu des corrections de Bug assez notable, c'est d'ailleurs pour cela qu'il était déprécié en D7 au profit du TTCPServer.

    Attention, si échange de record, pense au packed record, à utiliser des types communs, attention au Char par exemple différent en D5 et D11, attention au Extended différent en 32/64 Bits ... et j'en passe.

    En local, tu peux aussi échanger via des Pipes + Semaphore ou un WM_COPYDATA, sans besoin d'ouvrir un socket.
    SQL Server utilise les Pipes par exemple en local, voire même de la mémoire partagée, un FileMapping, toujours couplés avec un semaphore pour le signal de lecture.

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 378
    Points
    11 378
    Billets dans le blog
    6
    Par défaut
    Suite aux conseils et pistes de ShaiLeTroll, j'ai essayé les messages WM_COPYDATA interapps pour échanger les record compacts prévus.
    Après quelques galères et découvertes de problèmes (je voulais éviter la recherche de fenêtre en envoyant un broadcast et récupérant la réponse de la seule appli intéressée, mais sans succès... pb d'UAC semble-t-il)
    Au final, une fois mes bugs éliminés, ça fonctionne bien
    Merci ShaiLeTroll !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication TCP via un script VBS
    Par razorbug dans le forum VBScript
    Réponses: 1
    Dernier message: 31/08/2007, 15h00
  2. Gestion des threads de communication TCP/IP
    Par Daminus dans le forum Delphi
    Réponses: 6
    Dernier message: 01/12/2006, 13h37
  3. Communication TCP/IP avec Flash
    Par Rodrigue dans le forum Dynamique
    Réponses: 3
    Dernier message: 23/10/2006, 15h19
  4. Problème de communication TCP/IP
    Par Gouyon dans le forum Développement
    Réponses: 4
    Dernier message: 01/07/2006, 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