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

Composants VCL Delphi Discussion :

Connexion via Indy10 ne fonctionne pas sur un autre ordinateur


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut Connexion via Indy10 ne fonctionne pas sur un autre ordinateur
    Bonjour,

    Voila, j'ai développé une application sur delphi7 et avec indy10.
    J'y utilise TidFTP pour me connecter à un serveur et uploader un fichier texte.

    Jusque là tout fonctionne très bien, mais là ou je me pose des questions,
    c'est quand j'execute ce programme sur un autre ordinateur, il n'arrive pas à se connecter au serveur... .

    -Le serveur est le meme dans les deux cas, et je peux m'y connecter manuellement avec coreftp, donc pas d'indisponibilité coté serveur à priori;

    -les deux ordinateurs sont tout les deux des portables avec xp sp2;

    -pas de problème potentiel venant du firewall interne d'xp car j'ai modifié les
    registres pour ajouter le programme à la liste des programmes autorisés par le firewall d'xp

    -le deuxième ordinateur n'est pas dans un LAN, mais derrière une freebox
    avec fonction routeur activée.

    avant toute chose, voici mon code :

    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
     
    repeat
      begin
      try
      ftp.Host:='xxx';
      ftp.Username:='xxx';
      ftp.Password:='xxx';
      ftp.Port := 21;
      ftp.Passive := True;
      ftp.Connect;
      ftp.Put('C:\WINDOWS\mon_fichier.txt', '/htdocs/monfichier.txt', true);
      ftp.Disconnect;
      connect := true;
      except
         on E : Exception do
         begin
           ShowMessage('echec ftp');
         end;
      end;
     
      end;
    until connect = true;
    Donc je me pose la question suivante :

    Est-il possible que l'utilisation d'un composant, en l'occurance TidFTP, soit dépendante de la machine? et que une fois le programme débuggé et que tout marche, ce n'est pas pour autant que si on prend le fichier .exe et qu'on le teste sur un autre machine avec la meme OS, que ça fonctionne bien?

    Cela me fait penser par exemple au composant IdAttachment qui ne fonctionne pas avec mon code sur mon portable, mais après une petite recherche sur google, j'ai trouvé IdAttachmentFile qui me permet de faire la meme chose, mais qui lui fonctionne sans problème... .

    Voila, je serais curieux de connaitre votre avis sur la question

    KND

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par kernigansnotdead Voir le message
    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
     
    repeat
      begin
      try
      ftp.Host:='xxx';
      ftp.Username:='xxx';
      ftp.Password:='xxx';
      ftp.Port := 21;
      ftp.Passive := True;
      ftp.Connect;
      ftp.Put('C:\WINDOWS\mon_fichier.txt', '/htdocs/monfichier.txt', true);
      ftp.Disconnect;
      connect := true;
      except
         on E : Exception do
         begin
           ShowMessage('echec ftp');
         end;
      end;
     
      end;
    until connect = true;
    1er chose, le Repeat ... until je ne vois pas l'utilité (surtout si tu retentes une connexion en cas d'erreur)

    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
     
    ftp.Host:='xxx';
    ftp.Username:='xxx';
    ftp.Password:='xxx';
    ftp.Port := 21;
    ftp.Passive := True;
    try
      ftp.Connect;
    Except on E:Exception do
      begin
        Showmessage('Erreur de connexion : ' + E.Message);
        exit;
      end;
    end;
     
    connect := False;
    repeat
      begin
     
      try
        ftp.Put('C:\WINDOWS\mon_fichier.txt', '/htdocs/monfichier.txt', true);
        connect := true;
      except on E : Exception do
         begin
           ShowMessage('echec ftp : ' + E.Message); // permettra d'avoir l'affichage du texte de l'exception
         end;
      end;
     
      end;
    until connect = true;
    ftp.Disconnect;
    Ca sera mieux comme cela (quoi que la boucle infinit sur le téléchargement c'est pas terrible)

    Citation Envoyé par kernigansnotdead Voir le message
    Est-il possible que l'utilisation d'un composant, en l'occurance TidFTP, soit dépendante de la machine? et que une fois le programme débuggé et que tout marche, ce n'est pas pour autant que si on prend le fichier .exe et qu'on le teste sur un autre machine avec la meme OS, que ça fonctionne bien?
    La seule chose qui peut jouer c'est la configuration des logiciels de protection de la machine. Un composant ne "décide" pas de fonctionner sur un poste plutot qu'une autre.

    Citation Envoyé par kernigansnotdead Voir le message
    Cela me fait penser par exemple au composant IdAttachment qui ne fonctionne pas avec mon code sur mon portable, mais après une petite recherche sur google, j'ai trouvé IdAttachmentFile qui me permet de faire la meme chose, mais qui lui fonctionne sans problème... .
    C'est normal avec Indy10, il y a eu des modifications dans les unités et dans le fonctionnement global (Voir dans la )
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    Salut,

    le repeat est tout simplement là car le programme se lance au démarrage, et quand il se lance la connexion internet n'est pas encore fonctionnelle, d'ou le repeat.
    Maintenant il y a surement un moyen de résoudre cela plus efficacement, mais en tout cas avec le code tel qu'il est là, quand le programme se lance au démarrage de la machine et que la connexion internet n'est pas encore ok, le programme tente de se connecter et dès qu'il y a internet, se connecte, et sa marche, et sans que le pc ralentisse.

    Pour le reste effectivement, ça me rassure de savoir que heureusement, les composants indy ne décident pas de fonctionner ou non selon la configuration du pc;

    En revanche, je ne vois pas quel programme, entité ou je ne sais quoi, pourrait empecher la connexion de se faire, et comment.

    L'antivirus (avast) a été désactivé pour l'occasion, j'ai rajouté (dans les registres) mon programme à la liste des logiciels autorisés par défault par firewall interne d'xp. D'ailleurs a l'essai, je n'ai donc pas eu de messages du style 'Voulez vous maintenir le blocage...etc'

    Pas de firewall autre du style ZoneAlarm ou je sais quoi.

    Sincèrement, je ne vois pas ce qui a pu empêcher la connection

    KND

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Peux tu essayer de faire la connexion avec mon projet (EasyIndy dans ma signature).

    Mais pour cela, il va falloir que tu fasses une manipulation.

    - Télécharge et décompresse le fichier
    - Créer un nouveau projet.
    - Ajoutes toutes les unités
    - dans les options du projet, mets en form principale MainForm.pas
    - Sauvegarde le projet (pas besoin de garder l'unit1) et compile.

    Après teste, la partie FTP.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    En fait en cherchant un peu sur google, je me suis apercu que mon problème viendrait de la freebox :
    Si la fonction routeur est activée, le port 21 n'est pas automatiquement débloqué, il faut l'ajouter à la liste. Ce que je trouve bizzare, étant donné que si la fonction routeur n'avait pas été activée, je n'aurais à priori pas eu de problème de connection via ftp...

    Et étant donné que je ne suis pas derrière une freebox, mais juste derrière un modem adsl Calisto 800, je n'ai pas eu ce problème.

    KND

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par kernigansnotdead Voir le message
    En fait en cherchant un peu sur google, je me suis apercu que mon problème viendrait de la freebox :
    Si la fonction routeur est activée, le port 21 n'est pas automatiquement débloqué, il faut l'ajouter à la liste. Ce que je trouve bizzare, étant donné que si la fonction routeur n'avait pas été activée, je n'aurais à priori pas eu de problème de connection via ftp...

    Et étant donné que je ne suis pas derrière une freebox, mais juste derrière un modem adsl Calisto 800, je n'ai pas eu ce problème.

    KND
    bizarre, normalement c'est du côté serveur que tu dois te soucier du fait qu'un port soit bloqué ou pas (connexion entrante), car du côté client, un port aléatoire est choisi pour initier une connexion vers le port 21 du serveur pour le protocole FTP. alors, du côté client (ce qui est ton cas je suppose) que le port 21 soit bloqué ou pas ne devrait rien changer du tout.
    en prenant exemple sur un navigateur web, celui ci attaque le port 80 par défaut chez le serveur, mais le port local utilisé n'est pas important (connexion sortante).
    si ta manipulation résout ton problème tant mieux, quoique vraiment bizarre. sinon rien ne te coûte de faire le test proposé par Rayek.

  7. #7
    Membre régulier Avatar de kernigansnotdead
    Homme Profil pro
    Traducteur technique anglais > français indépendant
    Inscrit en
    Septembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Traducteur technique anglais > français indépendant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    salut, je suis d'accord avec toi, mais ce que je comprends pas, c'est que je me connecte très bien au serveur via mon programme depuis mon ordinateur à moi.
    Donc je ne peux pas conclure autrement qu'il y a un problème de restriction dans le cas de l'autre ordinateur que j'ai testé, et qui se trouve donc derrière une freebox avec routeur activé, alors que je me trouve derrière un simple modem

  8. #8
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    as tu essayé ceci ?
    Citation Envoyé par Rayek Voir le message
    Peux tu essayer de faire la connexion avec mon projet (EasyIndy dans ma signature).

    Mais pour cela, il va falloir que tu fasses une manipulation.

    - Télécharge et décompresse le fichier
    - Créer un nouveau projet.
    - Ajoutes toutes les unités
    - dans les options du projet, mets en form principale MainForm.pas
    - Sauvegarde le projet (pas besoin de garder l'unit1) et compile.

    Après teste, la partie FTP.

Discussions similaires

  1. Programme ne fonctionne pas sur d'autres ordinateurs
    Par r0d dans le forum Visual C++
    Réponses: 8
    Dernier message: 16/12/2010, 14h14
  2. exécutable qui ne fonctionne pas sur un autre ordinateur
    Par El_bennito dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 26/06/2009, 13h45
  3. L'exécutable ne fonctionne pas sur un autre ordinateur
    Par alladum dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/06/2009, 15h11
  4. [DOM] Code ne fonctionnant pas sur d'autres ordi
    Par Fatjo dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 09/11/2007, 12h23
  5. mon .exe ne fonctionne pas sur d'autre machine
    Par fmh1982 dans le forum Visual C++
    Réponses: 11
    Dernier message: 03/05/2007, 00h03

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