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 :

Idée pour la recherche d'une IP


Sujet :

Web & réseau Delphi

  1. #1
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut Idée pour la recherche d'une IP
    Bonjour,

    Je développe actuellement une application de chat, avec un serveur et plusieurs clients (logique ) sur un réseau local. Ce réseau est en fait un VPN (Virtual Private Network), donc a chaque connection/deconnection du serveur, l'IP change, et les clients qui l'utilisent doivent la retaper. Je me sert des composants IdTCPClient et IdTCPServer de Indy 10.

    J'aimerais une méthode pour trouver cette IP (a part de tester une connection avec chaque IP : environ 2h )

    Merci d'avance pour vos réponses !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Un VPN au sens Windows ? un Tunnelling entre deux ordi ?
    Comment ouvres-tu ce VPN ? personnellement, j'utilise soit Putty, soit une application maison basé sur le composant TElSSHClient de SecureBlackBox, se connectant sur un Linux ou un Window avec OpenSSH

    Regarde autour de DynIP, si tu as un moyen via un SiteWeb de fourni l'IP du Serveur, les clients allant consulter ce DNS pour savoir l'IP du serveur ...

    Pourquoi l'adresse IP change ?
    Tu as un Port Forwarding après ?
    Tu as l'ordinateur Client qui se connecte en local, ses données sont routés vers le Serveur SSH qui lui même redirige les données vers un autre Serveur ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Oula, c'est pas si compliqué ! (enfin il me semble)

    En fait, je suis en école d'ingé, et les résidences sont connectées via éthernet. Pour permettre la connection a internet, il y a un VPN, c'est un systeme qui permet de creer un nouveau réseau local exactement comme si c'était cablé : l'avantage : meme si la personne n'est pas sur le campus, si elle a internet, elle peut se connecter au VPN et donc faire partie du pseudo-"réseau local".

    Or, il se trouve que pour ce systeme, a chaque connection sur le VPN, l'adresse IP attribuée change. J'aimerais trouver le moyen de trouver cette IP.

    Je crois avoir compris que tu me conseillais d'"écrire" l'IP sur un site, et qu'avec les clients on va "lire" sur ce site l'IP du serveur.

    Edit : Je suis sous Vista et je ne m'occupe pas de développer pour linux.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    D'accord, ton VPN est totalement obscure, c'est intégré dans le Window via une connexion VPN classique de Windows, on utilise ça souvent pour le Bureau à Distance. OK

    Mais ce que je ne comprends pas, c'est que le serveur est lui même en connexion VPN ? Pourquoi n'est-il pas dans le réseau local de l'école ?
    et une fois le VPN en place, le serveur devrait être accessible via une IP genre 192.168.... maintenant, si le serveur est en fait un ordinateur en dehors du réseau, par exemple, ton ordinateur ... tu auras la même problématique pour un site HTTP, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Merci !

    Ta réponse me plait mais me déplais : je n'ai donc pas de solutions pour ca ! Tant pis !

    Le serveur c'est bien mon ordi (bien joué) parce que je ne peux pas le mettre comme tu dis (c'est pas moi qui gere le réseau).

    Alors, deuxieme idée : Lors d'une tentative de connection sur le serveur de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try
      Form1.IdTCPClient1.Connect;
    except
      ShowMessage('Le serveur ne réponds pas, veuillez rééssayer plus tard.');
    end;
    le temps de réponse est assez long (2 à 3s). y-a-t il un moyen de réduire ce temps ? (par exemple, réduire le nombre de paquets a envoyer, je ne sais pas si ca marche comme ca ...)

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Je ne me rappelle pas si il y a un TimeOut dans le TTCPClient ...

    Sinon une idée, tu as un instant T, le Serveur et des clients, le serveur tombe, à ce moment, une procédure de récupération est possible, je m'explique ... lorsqu'un client se connecte, tu lui fourni l'adresse IP des autres clients sous la forme d'un tableau de Cardinal + Date (voir inet_addr), facile à envoyer et à stocker !
    Le Serveur stocke dans un fichier ce tableau dès qu'il est modifié
    Tu envoies aussi à tous les autres clients, la nouvelle liste d'IP + Date ... à chaque Déconnexion\Connexion, tu dois surement avoir déjà un système d'alerte du genre, il te suffit de joindre ce petit tableau en plus ...

    Lorsque le serveur tombe, automatiquement, l'un des clients (disons le plus ancien), devient le serveur ...
    Les Clients savent via le Tableau l'IP du plus ancien Client, il essaye de s'y connecter, si il n'y arrive pas au bout de 5 tentatives, il devient lui même serveur ...

    Ton ordinateur à toi redémare, le Serveur se relance, et il y a une option (dans un fichier de config), qui indique c'est le Maitre, il relit donc le fichier stocké, il va se connecter sur toutes les IP connues jusqu'à ce qu'il trouve un nouveau serveur (voire plusieurs), et lui indique qu'il est de retour, ... et à ce moment, les serveurs temporaires ayant l'IP du Server Maitre, envoie cette IP à tous les Clients dont ils ont eu la charge, il repasse en mode Client, ... les autres Clients ayant reçue l'IP du Serveur Maitre via leur Serveur Temporaire, repasse aussi en Client sur le Serveur Maitre ...

    Ouais, c'est du grand délire, je sais, mais ça peu être fun à coder

    Passe la connexion dans un Thread, ainsi l'application ne se bloquera pas, et le délai serait donc moins génant ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    J'ai pensé a ca ... Mais ca ne marchera pas !
    Le serveur se déconnecte, et dans ce cas, tout les clients se déconnectent (pas automatiquement, mais les utilisateurs quittent). Les clients ne peuvent pas etre serveur, ca serait beaucoup trop dur ...

    Pour le délai, ce n'est pas genant, c'est un délai qui ne se fait qu'une seule fois, lors de la connection, je ne vais pas faire un thread juste pour ca ...

    Ce n'est pas un TTCPClient, c'est un IdTCPClient d'Indy 10. Je vais rechercher ce TimeOut, j'espere qu'il y en a un ...

    Merci pour ta réponse

  8. #8
    tintin22
    Invité(e)
    Par défaut
    Je sais pas si ces differents postes client ont une connexion Internet ou pas, en tout cas, tu as deux possibilités,

    - La recherche (en reduisant la plage d'IP uniquement sur le sous-reseau en question, si c'est un 192.168.1.0/24 , tu auras 254 adresses à scanner).
    - Si les postes client beneficient d'une connexion Internet, il suffira de stocker l'adresse IP de ton serveur quelque part sur un serveur public.

  9. #9
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    La plage d'IP est assez grande :

    10.31.40.### ---> 10.31.45.###

    donc 5*255 IP a scanner (voir plus).

    Avec 2 sec par IP : 2550 s soit 42 min 30 ...
    en sachant que 2 sec c'est le minimum, et que ca ne s'arrete peut etre pas a 10.31.45.###

    Les postes client ont bien une connection Internet . Peux tu me donner plus d'informations sur la deuxieme solution ?


    Merci bcp !

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Un "Serveur Public", qu'est-ce ? Encore une solution avec une IP Fixe ?
    voir sinon avec DynIP.org, si il y a des choses à faire avec, un collègue l'avait utilisé pour un truc similaire, à l'époque, je n'ai pas compris grand chose ...
    Sinon, pour IRC, il y a des serveurs, comment ça marche pour savoir où il doit aller se connecter ...


    Sinon, pourquoi les clients ne pourraient-ils pas être serveur ?
    Suffit d'avoir le code pour les deux dans le même Exe, ... ou sous la forme de DLL par exemple, ... et puis plus c'est dur ... plus c'est bon .... disait la jeune mariée ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    D'abord, le serveur a une interface graphique, et la mélanger avec celle du client .... . Ensuite, le serveur permet des avantages que je ne veux pas donner, car il faut savoir s'en servir (une erreur et ca plante, mais comme c'est moi qui le gere, je fais gaffe), et il permet par exemple de kicker ... (si ca tombe entre de mauvaises mains ...) . Enfin, la nuit, personne n'est connecté, de meme pendant les cours, donc le probleme serait le meme ...

    Et ultime raison, je suis occupé sur un autre programme en ce moment !!

    Edit : et je ne peux pas mettre mon IP comme IP fixe (déja pensé)

  12. #12
    tintin22
    Invité(e)
    Par défaut
    @mick605: t'es pas obligé de scanner sequentiellement, tu peux utiliser les threads pour gagner du temps.

    Pour la deuxieme solution, tu peux créer un accès compte ftp chez un hebergeur gratuit, tu y deposeras un fichier texte contenant l'adresse IP de ton serveur à un instant T. Les postes client n'auront qu'a se connecter sur toncompte.tonhebergeur.com avec ton username/password pour y recuperer ce fichier ( donc l'IP ). Tu peux utiliser le composant client IndyFTP.
    ( Tu peux mettre un fichier HTML au lieu du fichier texte contenant que l'IP et le lire par le composant IndyHTTP )
    J'ai deja eu recours à cette solution, ça marche parfaitement et ça prend quelques minutes pour la réaliser !

  13. #13
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Ouais pour les threads, mais il en faut quand meme pas mal pour que ca vaille la peine (une quinzaine ...) car je viens de me rendre compte que ca va jusqu'a 10.31.47.### .

    Je pense que je vais opter pour ta derniere solution, merci !

    Merci a tous !!

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Je pense aussi la solution chez un hébergeur gratuit, ou chez un compte, Free par exemple d'un ami qui t'offre un accès FTP ... (moi c'est ce que je ferais avec le compte de mon cousin)

    Citation Envoyé par mick605 Voir le message
    D'abord, le serveur a une interface graphique, et la mélanger avec celle du client .... . Ensuite, le serveur permet des avantages que je ne veux pas donner, car il faut savoir s'en servir (une erreur et ca plante, mais comme c'est moi qui le gere, je fais gaffe), et il permet par exemple de kicker ... (si ca tombe entre de mauvaises mains ...) .
    Tu te méprens sur mes propos, je ne parle que du Serveur TCP\IP, juste à ce niveau, assez proche du principe de répartition de charge (load-balancing) comme j'en ai discuté avec ghazghkull, ICI, l'outil d'administration du Chat, pour moi, ne devrait qu'un Super-Client qui se connecte sur le serveur, cela permet de déporter celui-ci chez Gandi par exemple ... personnellement, j'ai déjà fait un serveur pilotant un automate connecté par TCP\IP, basé sur un TServerSocket de D4, le programme ne contenait aucune Form (même pas l'objet TApplication), tout géré en thread, avec une robutesse et une stabilité à toute épreuve (j'ai découvert comme cela avec un pote que Win98 plantait lorsque GetTickCount revenait à Zéro )
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    A ok je vois ce que tu veux dire ...
    Mais bon, ca ira comme ca, merci quand meme !!

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

Discussions similaires

  1. Idées pour se protéger d'une décompilation ?
    Par URZqq dans le forum Général Java
    Réponses: 3
    Dernier message: 03/07/2011, 23h44
  2. [WD15] Idées pour la création d'une procédure
    Par thierrybatlle dans le forum WinDev
    Réponses: 7
    Dernier message: 20/05/2010, 09h17
  3. idées pour la création d'une base de données ?
    Par sephiroth669 dans le forum Access
    Réponses: 3
    Dernier message: 22/03/2010, 18h43
  4. Création d'un Widget pour la recherche dans une liste
    Par faxeur1986 dans le forum Java ME
    Réponses: 0
    Dernier message: 26/08/2009, 15h56
  5. Besoin da'ide pour le Déploiment d'une Application VB6 sur un Serveur d'application
    Par blowlagoon dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 02/08/2006, 23h24

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