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 :

TCP Login et executer des commandes.


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Par défaut TCP Login et executer des commandes.
    Bonjour,

    Je suis vraiment débutant et completement neuf ici au forum.

    J´ai un probléme avec une connection TCP.

    Je dois me connecter a un TCP port, puis envoyer une séquence pour le login, d´aprés que le login est ok je recoit un string de retour.
    Jusque la tout fonctionne.

    Mais maintenant mon probléme, je dois rester connecté avec mon login et mot de passe, est dans cette session je dois continuer an envoyer des sequences par ex. port1on ou port1off.

    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    procedure TForm4.Button1Click(Sender: TObject);
    Var
      Result, Login, port1on, port1off: string;
     
    begin
      // IdTCPClient1.Host := 'localhost';
      // IdTCPClient1.Port := 6354;
      // IdTCPClient1.ConnectTimeout := 2000;
     
      Login := #$01#$02#$55#$53#$45#$52#$3a#$61#$64#$6d#$69#$6e#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$50#$57#$44#$3a#$61#$64#$6d#$69#$6e#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$01#$00;
      port1on :=
        #$04#$01#$02#$2#$3c#$00#$0a#$01#$ff#$00#$00#$00#$00#$00#$00#$00#$fe;
      port1off :=
        #$04#$01#$02#$2#$3c#$00#$0a#$01#$00#$00#$00#$00#$00#$00#$00#$00#$fe;
     
      if IdTCPClient1.Connected = False then
        IdTCPClient1.Connect
      else
      begin
        try
     
          IdTCPClient1.IOHandler.Write(Login);
          repeat
          until not IdTCPClient1.IOHandler.CheckForDataOnSource(5000);
     
          // return whatever was actually read
          Result := IdTCPClient1.IOHandler.InputBufferAsString;
          Memo1.Lines.Add(Result);
        finally
          IdTCPClient1.Disconnect;
        end;
      end;
    end;

  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 : 56
    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
    il suffit de séparer la connexion, la lecture/écriture et la déconnexion

    Button1 -> IdTCPClient1.Connect + envoi du Login
    Button2 -> envoi port1on ou off
    Button3 -> IdTCPClient1.Disconnect;

    tout cela avec une gestion d'erreur pour gérer l'état Enabled des boutons
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    il suffit de séparer la connexion, la lecture/écriture et la déconnexion

    Button1 -> IdTCPClient1.Connect + envoi du Login
    Button2 -> envoi port1on ou off
    Button3 -> IdTCPClient1.Disconnect;

    tout cela avec une gestion d'erreur pour gérer l'état Enabled des boutons
    Tout d´abort merci pour la réponse.

    Puuh, savez-vous ou je peut trouver un example, pour séparer tout cela?
    Bon j´ai essayé mais...
    La connection fonctionne, le login aussi,
    La lecture "semble" fonctionner séparément avec un timer. Mais a l´envoi du "port1on" rien ne bouge, la tramme n´est méme pas envoyé.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    procedure TForm4.LoginClick(Sender: TObject);
     
    begin
      // IdTCPClient1.Host := 'localhost';
      // IdTCPClient1.Port := 6354;
      // IdTCPClient1.ConnectTimeout := 2000;
     
      Login1 := #$01#$02#$55#$53#$45#$52#$3a#$61#$64#$6d#$69#$6e#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$50#$57#$44#$3a#$61#$64#$6d#$69#$6e#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$20#$01#$00;
      IdTCPClient1.IOHandler.Write(Login1);
      Timer1.Enabled := True;
     end;
     
    procedure TForm4.Timer1Timer(Sender: TObject);
    Begin
      Try
         repeat
           until not IdTCPClient1.IOHandler.CheckForDataOnSource(500);
           // return whatever was actually read
          Result := IdTCPClient1.IOHandler.InputBufferAsString;
          Memo1.Lines.Add(Result);
         finally
     
       end;
    end;
     
    procedure TForm4.Button1Click(Sender: TObject);
    begin
     
       port1on :=
        #$04#$01#$02#$2#$3c#$00#$0a#$01#$ff#$00#$00#$00#$00#$00#$00#$00#$fe;
     
       //if IdTCPClient1.Connected = False then
       // IdTCPClient1.Connect
       //   else
          IdTCPClient1.IOHandler.Write(port1on);
    end;
     
    procedure TForm4.Button2Click(Sender: TObject);
    begin
    port1off := #$04#$01#$02#$2#$3c#$00#$0a#$01#$00#$00#$00#$00#$00#$00#$00#$00#$fe;
     
      // if IdTCPClient1.Connected = False then
      //  IdTCPClient1.Connect
      //else
     
          IdTCPClient1.IOHandler.Write(port1off);
     
    end;
     
    procedure TForm4.ConnectClick(Sender: TObject);
    begin
         IdTCPClient1.Host := 'localhost';
         IdTCPClient1.Port := 55006;
         IdTCPClient1.ConnectTimeout := 2000;
     
         IdTCPClient1.Connect;
         Memo1.lines.add(Format('Connexion au serveur TCP : %s/%d (TimeOut : %d)',[IdTCPClient1.Host, IdTCPClient1.Port, IdTCPClient1.ConnectTimeout]));
    end;
     
    procedure TForm4.IdTCPClient1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: string);
     
    begin
      Memo1.Lines.Add(AStatusText);
    end;

  4. #4
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Par défaut
    Hmm, personne peut m´aider?

  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 : 56
    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
    sujet largement abordé déjà

    ici par exemple
    http://www.developpez.net/forums/d10...t-idtcpclient/
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    sujet largement abordé déjà

    ici par exemple
    http://www.developpez.net/forums/d10...t-idtcpclient/
    Hmm, ok merci pour l´info!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/11/2007, 23h07
  2. executer des commandes DOS à partir un fichier *.bat
    Par younek dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 21/10/2007, 12h21
  3. Exécution des commandes à distance
    Par diamonds dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 07/12/2006, 13h46
  4. executer des commandes
    Par hawaks dans le forum Général Python
    Réponses: 3
    Dernier message: 17/12/2005, 12h41
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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