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

Langage Delphi Discussion :

Tethering en local, limité par les ports UDP


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Tethering en local, limité par les ports UDP
    Bonjour,

    Je suis un jeune développeur Delphi et c'est mon premier poste, prière de ne pas taper .

    Je développe actuelle un système de communication entre plusieurs applications (environs 8) fonctionnant sur une même machine et mon choix c'est porté sur le tethering.

    Pendant mes testes tout fonctionne bien, seulement certains utilisateurs fonctionne avec des systèmes de virtualisation type Citrix ou TSE et ont remonté des erreurs type "le gestionnaire xxxxx est désactivé".
    Comme ils sont plusieurs utilisateurs sur un même poste réel, je pense que ça peut venir de la limitation du nombre de ports UDP disponibles (UDP 2020 à 2040 donc 20 manageurs maximum disponible).
    http://docwiki.embarcadero.com/Libra...NetworkAdapter

    En regardant avec wireshark je constate que le manageur fait un broadcast depuis le port UDP affecté à l'appel de la méthode DiscoverManagers, une fois l'appairage des manageurs la communication ne se fait pas en TCP, donc je ne devrait pas avoir de problème à ce niveau.

    Je voudrais savoir si il y a un moyen pour avoir plus de 20 applications communicant en même temps sur un même ordinateur.

    Je suis sur Delphi Berlin et je n'utilise pas les actions et ressources des AppProfiles mais seulement l'envoi de string car je préfère que la communication soit asynchrone.

    Merci d'avoir lu jusque la et j'espere que quelqu'un aura une solution

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Bonjour,

    je ne vois pas bien l'intérêt d'utiliser le tethering pour du TCP/IP en local

    tout l'intérêt du tethering est de découvrir des postes distants automatiquement.

    pour du local, je me contenterais de créer un serveur TCP sur le port 1024 (par exemple), s'il n'est pas disponible, sur le port 1025 en tentant d'établir la connexion sur le 1024 qui est probablement une autre instance. etc...

    un MailSlot pourrait aussi être utilisé...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse Paul TOTH,

    L'intérêt c’était aussi de tester le tethering, pour éventuellement faire communiquer des postes distants dans un deuxième temps, du coup on aurait eu une seul technologie pour les deux besoins.
    Dans la documentation et les différentes présentations, ils disent bien qu'on peut utiliser le tethering pour des applications fonctionnant sur le même poste.

    Si quelqu'un à une solution miracle (je n'y crois pas pas beaucoup) utilisant le tethering ça m’arrangerait bien.
    J'envisageais éventuellement d'implémenter un TTetheringAdapter différent du TTetheringNetworkAdapter, mais j'ai pas encore bien estimé le cout en temps .
    Sinon je partirais sur un autre type de solution.

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    la limitation vient de cette déclaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      TTetheringNetworkAdapterCommon = class(TTetheringAdapter)
      public const
        FirstManagerPort = 2020;
        LastManagerPort = 2039;
    le ManagerPort est celui qui est à l'écoute, si les ports 2020 à 2039 sont occupés, on a une exception et rien ne fonctionne
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    En fait je pense que j'ai mal formulé mon problème :

    Les ports 2020 à 2039 sont utilisé pour l'appairage des manageurs, mais une fois les manageurs appairés, la communication entre leurs appProfiles ne se fait plus en UDP sur ces ports, mais en TCP sur les ports 2035 à 2100.
    http://docwiki.embarcadero.com/Libra...NetworkAdapter

    Ce que je voudrait c'est qu'une fois que les manageurs se sont appairés, ils libèrent pour leur port UDP qu'ils utilisaient précédemment puisque je ne cherche plus à l'appairer à d'autres manageur.
    Mais que la communication entre les les AppProfiles qui se fait en TCP continue.

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par RobinG Voir le message
    En fait je pense que j'ai mal formulé mon problème :

    Les ports 2020 à 2039 sont utilisé pour l'appairage des manageurs, mais une fois les manageurs appairés, la communication entre leurs appProfiles ne se fait plus en UDP sur ces ports, mais en TCP sur les ports 2035 à 2100.
    http://docwiki.embarcadero.com/Libra...NetworkAdapter

    Ce que je voudrait c'est qu'une fois que les manageurs se sont appairés, ils libèrent pour leur port UDP qu'ils utilisaient précédemment puisque je ne cherche plus à l'appairer à d'autres manageur.
    Mais que la communication entre les les AppProfiles qui se fait en TCP continue.
    je ne suis pas certain qu'il soit possible de couper l'appairage une fois la connexion établie...d'autant que cela interdit la connexion d'autres postes, et tu en as 8.

    un autre intérêt de Tethering c'est qu'il supporte plusieurs protocoles, si tu restes uniquement en TCP/IP, voir sous Windows, il sera plus simple d'utiliser Indy par exemple que de créer un nouvel adapter.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour les réponses, j'ai pas encore eu le temps de tester une des autres solutions proposées, mais j'essaierai de faire un retour d'expérience à l'occasion.

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Finalement j'ai remplacé le tethering par un mailslot et tout fonctionne aussi bien, voir mieux qu'avant.
    Le seul bémol est que je n'ai plus d’événement OnResourceReceived, j'ai mis un timer qui vérifie régulièrement si il y a des nouveaux messages dans le mailslot.

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Déplace le contrôle du slot dans un thread secondaire.

    N'oublie pas non plus que si tes apps locales sont mises en réseau par la suite, la taille des messages sera limitée à 424 octets.

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

Discussions similaires

  1. Acquisition par les ports COM sous SIMULINK
    Par lfall dans le forum Simulink
    Réponses: 0
    Dernier message: 06/03/2012, 11h25
  2. Se connecte à tous les ports UDP, même fermés
    Par yetimothee dans le forum Réseau/Web
    Réponses: 10
    Dernier message: 26/11/2008, 13h25
  3. Réponses: 4
    Dernier message: 29/06/2007, 18h36
  4. Réception sur même port UDP par 2 appli
    Par Yannick_from_31 dans le forum Langage
    Réponses: 4
    Dernier message: 19/06/2007, 16h36
  5. Réponses: 11
    Dernier message: 08/03/2007, 14h29

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