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

Windev Mobile Discussion :

Android : plantage accès HFSQL C/S lors perte connexion wifi [WM20]


Sujet :

Windev Mobile

  1. #1
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut Android : plantage accès HFSQL C/S lors perte connexion wifi
    J'ai une application WM Android qui utilise les accès natifs HFSQL C/S pour accéder à une base distante installée sur un serveur Windows Server 2012.

    La connexion entre le mobile et le serveur se fait via un réseau Wifi.

    Avant d'utiliser une commande HFSQL (HRaz, Hajoute, etc ...) je fais un test avec la commande "InternetConnecte" (http://doc.pcsoft.fr/fr-FR/?3043005).

    Malgré cela, j'ai un plantage lorsque l'utilisateur en se déplaçant sort de la zone de couverture de l'access point wifi, et donc le réseau n'est plus disponible. Dès lors, l'application plante ....

    Comment peut-on assurer que les commandes H ne plantent pas si pas de réseau ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Un truc tout bête mais si j'ai un portable avec de la 3G et que je sors du wifi, internet connecte utilisera la 3G pour faire le test, et il passera.
    Il existe des fonctions de reprise auto de la connexion (géré par Windev), il faut lire la doc correspondante:http://blogs.pcsoft.fr/post.awp?titl...nta64exe,7,508
    Et la fonction HReconnecte: http://doc.pcsoft.fr/fr-FR/?1000017278

    Le gérer toi même est fastidieux: tu dois t'assurer de la connexion à la base en permanence si je comprend bien.

    Si j'avais à le faire, 2 solutions:

    1) je créerais une procédure auto dans un thread qui teste la connexion au serveur(mais paye ton trafic réseau!), et je joue avec un booleen que InternetConnecte (au préalable surchargée, sinon tu fais une fonction ServeurConnecte à part et tu testes les 2) va tester. Avantage: partout ou tu utilises internetconnecte en fait tu as egalement la fonction ServeurConnecte dedans! Inconvénient: c'est sale quand même, si t'as 500 clients qui envoient des appels au serveur a intervalles réguliers c'est pas propre.

    2) je surcharge les fonctions qui interagissent avec la base pour les empêcher de fonctionner si la base n'est pas accessible. ca évite de faire des appels réguliers car je ne testerai que si j'appelle une fonction qui utilise la base, c'est plus fin comme gestion mais plus lourd à coder. Et tout ce qui est plus lourd à coder est aussi plus lourd à maintenir.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Normalement avec HSurErreur tu peux rerouter vers une procédure qui va gêrer l'erreur .....

    Sous WM Android, le re routage n'a pas l'air de fonctionner chez moi ...

    Et pourtant j'ai bien configuré

    HSurErreur ("*", hErrPerteConnexion, CB_PerteConnexion)

    et j'ai même essayé :

    HSurErreur ("*",hErrPerteConnexion, "CB_PerteConnexion")

    CB_PerteConnexion est une procédure globale.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si cette procédure est bien exécutée lors de la perte de la connexion alors sans savoir son code je ne pourrais pas dire si elle peut causer un quelconque probleme.
    Si j'ai du temps je pourrais le tester pour tenter de t'éclairer...

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'ai fait un projet de test sous une version de WM 20 (66p dernière en date)
    Je lance l'appli, me connecte, ajoute un enregistrement et éteint le serveur. Sur le simulateur j'ai une erreur qui n'apparait pas sur le téléphone mais bref, l'appli se fige car c'est ce que j'ai voulu (en fait elle boucle tant que la fonction perteconnexion n'a pas réussi à obtenir un Vrai de HReconnecte), et quand je rallume le serveur, l'opération qui avait été tentée est faite.

    Aucun plantage de l'appli, donc perso tout fonctionne. La gestion peut être plus fine certe (la je bloque tant que la connexion n'est pas revenue) mais pour la base, tout fonctionne.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    J'ai fait une erreur de débutant ..

    Il faut mettre le "hsurerreur" après "hchangeconnexion" et non avant ....

    Le "hchangeconnexion" remet à zero le re routage. C'est logique.

    Dans le "hsurerreur", soit on tente x fois un "hreconnecte" soit on annnule avec "opannuler".

    Exemple:

    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
     
    PROCEDURE Reconnecte()
    bResReconnexion est un entier
     
    //tentative de reconnexion, jusqu'à 10 fois
    BOUCLE (10)
            bResReconnexion=HReconnecte()
            SI bResReconnexion ALORS
                    SORTIR //OK        
            SINON
                    //attente d'une demi seconde
                    Temporisation(50)
            FIN        
    FIN
    //Reconnexion OK ?
    SI bResReconnexion ALORS
            //La fonction HFSQL qui a provoqué l'erreur de connexion peut re-essayer
            RENVOYER opRéessayer
    SINON
            //cela n'a pas fonctionné
            RENVOYER opFinProgramme //ou opAnnuler mais dans ce cas il faut gérer les erreurs localement aux différents code également
    FIN

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

Discussions similaires

  1. [2.x] Accès refusé via cmd lors de l'installation symfony 2
    Par ciranox dans le forum Symfony
    Réponses: 2
    Dernier message: 30/08/2013, 17h09
  2. Plantage ESX suite perte connexion SAN
    Par faaaa dans le forum VMware
    Réponses: 1
    Dernier message: 27/05/2013, 09h40
  3. Réponses: 17
    Dernier message: 12/07/2011, 15h25
  4. Perte du WiFi lors du debug sous visual studio
    Par hummm dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 09/10/2007, 09h37
  5. Réponses: 5
    Dernier message: 07/09/2006, 15h09

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