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 :

[Indy 10] Message "Connection closes gracefully"


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Fondateur MIV-SOFT
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Fondateur MIV-SOFT
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Par défaut [Indy 10] Message "Connection closes gracefully"
    Bonjour,

    j'ai un prog qui fonctionnait en indy 9 que je migre en Indy10
    ce prog IdTcpClient
    1) envoi un block de byte
    2) doit attendre la réponse (mini time out)
    3) receptionne les datas à mettre dans des Bytes

    la connexion c'est OK
    l'envoi ça parait Ok
    mais la recption c'est toujours "connection closes gracefully"
    si quelqu'un à un exemple ou une solution
    Merci

    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
     
    function TVmModBusTcp.ExeTcp_SendAndReceive(IdClient:TIdTCPClient;SendBuffer,ReceiveBuffer: TMBDataBuffer): boolean;
    var
      VBuffer: TIdBytes;
      s:string;
      dtTimeOut:TDateTime;
    begin
    Result := false;
     
      with IdClient do begin      //<< version indy 10
     
         // (STEP 1) : connexion
          try
            //param Host,etc is before load
             if Not Connected then
               connect;                                  // pas de PB
          except 
            on E:Exception do begin
              s:=E.Message;        //<<Error_1 :connexion
              exit;
            end;
          end;
     
          try
              // (STEP 2) : send Trame of byte
              IOHandler.Write(RawToBytes(SendBuffer, 12));
              Sleep(5);
     
              // (STEP 3) : Wait a few milisecond the response (mini time out)
              dtTimeOut := IncMilliSecond(now,200);
     
              while (IOHandler.InputBuffer.Size = 0) do begin
                 if IOHandler.Readable(0) then
                     //  ReadFromStack     //indy 9 but not indy 10  ??
                 else
                   Sleep(5);
                    //test déconnexion
                 if (Now > dtTimeOut) And (Not Connected) then begin
                   Exit;
                end;
              end; //while
     
     
              // (STEP 4) : Receive Data and transfert in Buffer Btyte
              move(IOHandler.InputBuffer,ReceiveBuffer,IOHandler.InputBuffer.Size);
     
     
          except
           on E:EIdConnClosedGracefully do
              S:=E.message;              //Error_2  "connection closes gracefully" ????
          end;
      end;    //with IdClient
     
    end;

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 43
    Par défaut
    "Connexion closed gracefully" c'est que ta connexion s'est terminée "proprement", c'est à dire que l'autre extrêmité à demandé la fin de la connexion. Tu auras TOUJOURS çà avec les composants Indy, maintenant si ça se produit avant que les données soient reçues, c'est que tu as un bug au niveau de l'envoi, cherche de ce coté là.

  3. #3
    Membre averti
    Homme Profil pro
    Fondateur MIV-SOFT
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Fondateur MIV-SOFT
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Par défaut
    Ok merci je vais vérifier

    excuses moi pour la réponse en retard je suis en déplacement

  4. #4
    DMO
    DMO est déconnecté
    Membre chevronné
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Par défaut
    Certaines levées d'exceptions, dans certaines conditions (de code d'erreur, ...), notament avec Indy, ne sont pas nécessairement des erreurs.

    Tu peux vérifier cela aisément : il y a si je me souviens bien un enorme gigantesquissime "READ ME" qui détaille la chose en commentaires dans l'unité que te montre Delphi à la levée de ces exceptions. Je t'invite donc à lire ces commentaires (assez marrants pour certains d'ailleurs).

    Pour trancher, si l'exception n'est pas interceptée, et que tu la vois en exécution, c'est qu'il y a bien un pb dans ton code.

    En lisant en diagonale, j'ai cru comprendre que tu envoyais des données, et que tu attendais de recevoir une réponse. N'oublie pas que ce que tu essayes de faire, le "ReadLn" par exemple le fait très bien (attendre que des données arrivent) , et que les autres Read utilisent la valeur de ReadTimeOut, que tu peux donc définir comme tu veux. Tu peux donc sûrement appeler le Read qui va bien directement.

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

Discussions similaires

  1. Connection Closed Gracefully avec Indy 10 sur Windows server 2008
    Par NicolasSC dans le forum Web & réseau
    Réponses: 0
    Dernier message: 05/11/2010, 16h42
  2. Réponses: 3
    Dernier message: 05/02/2010, 14h09
  3. TidFTP Connection Closed Gracefully
    Par Soulama dans le forum Delphi
    Réponses: 6
    Dernier message: 30/01/2007, 21h43

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